Python - Cookie绕过验证码登录
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python - Cookie绕过验证码登录相关的知识,希望对你有一定的参考价值。
前言
有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接)。
获取不到也没关系,可以通过添加cookie的方式绕过验证码。
一、抓登录cookie
1.登录后会生成一个已登录状态的cookie,那么只需要直接把这个值添加到cookies里面就可以了。
2.可以先手动登录一次,然后抓取这个cookie,这里就需要用抓包工具fiddler了
3.先打开博客园登录界面,手动输入账号和密码(勾选下次自动登录)
4.打开fiddler抓包工具,刷新下登录首页,就是登录前的cookie了
5.登录成功后,再查看cookie变化,发现多了两组参数,多的这两组参数就是我们想要的,copy出来,一会有用
代码实例:
# baseinfo -> __init__ #-*-coding:utf-8-*- # Time:2017/9/23 17:44 # Author:YangYangJun loginUrl = "https://passport.cnblogs.com/user/signin" loginHeaders = { "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.79 Safari/537.36" } CNBlogsCookie = ‘通过抓包工具获取该Cookie‘ CnblogsAspNetCoreCookies = ‘通过抓包工具获取该Cookie‘ editUrl = ‘https://i.cnblogs.com/EditPosts.aspx?opt=1‘
#-*-coding:utf-8-*- # Time:2017/9/23 10:15 # Author:YangYangJun import requests #导入配置文件 import baseinfo #登录访问地址 loginUrl = baseinfo.loginUrl #请求头 loginHeaders = baseinfo.loginHeaders #登录后Cookie1 CNBlogsCookie = baseinfo.CNBlogsCookie #登录后Cookie2 CnblogsAspNetCoreCookies = baseinfo.CnblogsAspNetCoreCookies #新建随笔方位地址 editUrl = baseinfo.editUrl #获取session s = requests.session() # #r = s.get(loginUrl,headers = loginHeaders,verify = False ) #获取cookie c = requests.cookies.RequestsCookieJar() # 添加登录需要的两个cookie c.set(".CNBlogsCookie",CNBlogsCookie) c.set(‘.Cnblogs.AspNetCore.Cookies‘,CnblogsAspNetCoreCookies) #更新cookie s.cookies.update(c) body = {"__VIEWSTATE": "", "__VIEWSTATEGENERATOR":"FE27D343", "Editor$Edit$txbTitle":"这是绕过登录的标题: -*- Bluesky -*-", "Editor$Edit$EditorBody":"<p>这里是中文内容:http://www.cnblogs.com/Skyyj/</p>", "Editor$Edit$Advanced$ckbPublished":"on", "Editor$Edit$Advanced$chkDisplayHomePage":"on", "Editor$Edit$Advanced$chkComments":"on", "Editor$Edit$Advanced$chkMainSyndication":"on", "Editor$Edit$lkbDraft":"存为草稿", } r2 = s.post(editUrl, data=body, verify=False) #获取请求返回的响应信息 print r2.content
body中的值是可以通过开发者模式查看,如下图:
填写标题
response的返回内容还有其它更多信息
-- r.status_code #响应状态码
-- r.content #字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩
-- r.headers #以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回None
-- r.json() #Requests中内置的JSON解码器
-- r.url # 获取url
-- r.encoding # 编码格式
-- r.cookies # 获取cookie
-- r.raw #返回原始响应体
-- r.text #字符串方式的响应体,会自动根据响应头部的字符编码进行解码
-- r.raise_for_status() #失败请求(非200响应)抛出异常
以上是关于Python - Cookie绕过验证码登录的主要内容,如果未能解决你的问题,请参考以下文章