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

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

 

利用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的获取。

转载于:https://www.cnblogs.com/durcaidurcai/p/11446510.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值