• 欢迎访问:祀与戎,国之大事,在祀与戎。 手机号码:
  • 欢迎访问:祀与戎,国之大事,在祀与戎。
  • 欢迎访问:祀与戎,国之大事,在祀与戎。祀与戎
  • 祀与戎,国之大事,在祀与戎www.siyurong.com
  • 祀与戎,国之大事,在祀与戎。如果您觉得本站非常有看点,那么赶紧使用 Ctrl+D

Python3.6下的Requests登录及利用Cookies登录

思想观点 siyurong 4年前 (2022-09-09) 4次浏览 已收录 0个评论

利用Python中的Requests模块可以实现Post,Get等发送功能,我以登录某网站为例,记录使用Post发送用户名、密码及图形验证码,以及通过Cookies直接登录的内容。

1.利用POST发送用户名、密码及验证码。这里的验证码没有进行识别,只好先读取验证验图片,手动输入。

复制代码
 1 def LoginByPost():
 2     imgUrl='http://***/authcode.php'
 3     s=requests.session()
 4     res=s.get(imgUrl,stream=True)
 5     im=Image.open(BytesIO(res.content))
 6     im.show()
 7     code=input()
 8     loginUrl='http://***/admin_loginCheck.php'
 9     postData={'pname':'admin','password':'***','validateCode':code}
10     rs=s.post(loginUrl,postData)
11     url='http://***/***/admin_honor.php'
12     res=s.get(url)
13     res.encoding='utf-8'
14     print(res.text)

复制代码

此时,可以看出我们已经成功登录,并输出指定页面的内容。

2.利用Cookies直接登录。无需用户名、密码及验证码。此时,需要先获得登录该网站后的Cookies,一种方法是通过浏览器查看Cookies,另一种方法是利用上面的requests.session获取登录后的Cookies。我们采用第二种方式。

(1)通过requests.session获取Cookies。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def GetCookie():
    imgUrl='http://***/authcode.php'
    s=requests.session()
    print(s.cookies.get_dict())#先打印一下,此时一般应该是空的。
    res=s.get(imgUrl,stream=True)
    im=Image.open(BytesIO(res.content))
    im.show()
    code=input()
    loginUrl='http://***/admin_loginCheck.php'
    postData={'pname':'admin','password':'***','validateCode':code}
    rs=s.post(loginUrl,postData)
    c=requests.cookies.RequestsCookieJar()#利用RequestsCookieJar获取
    c.set('cookie-name','cookie-value')
    s.cookies.update(c)
    print(s.cookies.get_dict())

(2)利用上面获取的Cookies直接登录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def DirLogin():
    s=requests.session()
    url='http://***/***/admin_honor.php'
    headers={
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Encoding': 'gzip, deflate',
    'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
    'Cache-Control': 'max-age=0',
    'Connection': 'keep-alive',
    'Host': '***',
    'Referer': 'http://***/***/admin_index.php'
    }
    cookies={'PHPSESSID': 'cnguud4r1hmn3passs906odp21'}#这里就是利用上面的函数获得的Cookies
    rs=s.get(url,headers=headers,cookies=cookies,verify=False)
    rs.encoding='utf-8'
    print(rs.text)

此时,可以直接查看所需要页面的内容。

说明:然并卵,你会发现,通过Cookies直接登录,有时好用,有时无用。原因在于此网站是通过服务器的Session对客户进行判断,而Session在服务器端往往会设置会话期限,如果到了时间,服务器会把这个Session删除,这时,你还得再次利用第一个函数进行Cookie的获取。


祀与戎 , 版权所有蜀ICP备14023000号-6丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Python3.6下的Requests登录及利用Cookies登录
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址