Python接口自动化(五) cookie绕过验证码登录

有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接)。获取不到也没关系,可以通过添加cookie的方式绕过验证码。

抓登录cookie

如博客园,未登录时,使用fiddler抓包查看cookie值。登录后,使用fiddler抓包查看cookie值。查看cookie变化,发现多个两组参数。

#coding:utf-8
import requests
url="https://i-beta.cnblogs.com/posts?cateId=1588084"
headers={
    "User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
}
s=requests.session()
rs=s.get(url,headers=headers)
print(s.cookies)
#添加登录需要的两个cookie
cc=requests.cookies.RequestsCookieJar()
cc.set(".Cnblogs.AspNetCore.Cookies","CfDJ8K5MrGQfPjpFvRyctF-QEQcDzRZK5jUWvO_zH9KKA18eyWMeso1aSYMQUHEiM2gC0Kz5qLHMI50QKTkk6PxEVMIFUL0bIXSEGk-ctediSLIDYY3srFUeFns3rMJHJAXu4tUBpcbqyckZ2pAnZk5p8afXl1rmRi9oMmo8RzQ2JqUX5EX9hC8ux6OY2c9X9TU57cxrmCmisUWB06YZ-PPallxFyWZ97lKJMhreV1Ox-TpDaxAtjm_wJckCl-iaLtvJkuluk4esC5Z6O9kgyThVnKXWSil0BrPXGnCEQvj9DJrfpMKJWeRu0wUgEaDmKkBX2RCecc8g46hNbzUcIApyHtCR7FpfOk7Q6vWAmJCZbpOuwA0fk62Ls7a9nFqo0o1rO-MZZW40NKw6SJ738f0vm3bjoVP6MON4rYOFeyGO1SijlFlNQVEYSaI6q8CqIpzREHXbDc2OMiMZRJ-A_yAImMaISh-qf3petNru8zEHv0hyVqDdjPdfw4uBUOdV45YggBAo6GHzwhKjsFogldEMvvS26RfqXXOalkmdBIIFK09MNRqRIZfkLjg6xhDTAoWerA")
cc.set(".CNBlogsCookie","D3B13B6DC882FB671B0397F7E14D4B5C9C45C423C7894D19CBF8AD34723424420B0FBD6CEEFE2A6C109D33FBE1A420A59E99BA70CD42E056D576AFDCF8E1EDFDE9ACC6BA831A3C968836189F4B20E293F6244BD0")
s.cookies.update(cc)
print(s.cookies)
#查看需要登录才可以查看的列表
result=s.get("https://i-beta.cnblogs.com/api/posts/list?p=1&cid=1588084&tid=&t=1&cfg=0",headers=headers)
print(result.json())  

运行结果

C:UsersAdministratorAppDataLocalProgramsPythonPython37python.exe D:/Python0811/0919.py
<RequestsCookieJar[]>
<RequestsCookieJar[<Cookie .CNBlogsCookie=D3B13B6DC882FB671B0397F7E14D4B5C9C45C423C7894D19CBF8AD34723424420B0FBD6CEEFE2A6C109D33FBE1A420A59E99BA70CD42E056D576AFDCF8E1EDFDE9ACC6BA831A3C968836189F4B20E293F6244BD0 for />, <Cookie .Cnblogs.AspNetCore.Cookies=CfDJ8K5MrGQfPjpFvRyctF-QEQcDzRZK5jUWvO_zH9KKA18eyWMeso1aSYMQUHEiM2gC0Kz5qLHMI50QKTkk6PxEVMIFUL0bIXSEGk-ctediSLIDYY3srFUeFns3rMJHJAXu4tUBpcbqyckZ2pAnZk5p8afXl1rmRi9oMmo8RzQ2JqUX5EX9hC8ux6OY2c9X9TU57cxrmCmisUWB06YZ-PPallxFyWZ97lKJMhreV1Ox-TpDaxAtjm_wJckCl-iaLtvJkuluk4esC5Z6O9kgyThVnKXWSil0BrPXGnCEQvj9DJrfpMKJWeRu0wUgEaDmKkBX2RCecc8g46hNbzUcIApyHtCR7FpfOk7Q6vWAmJCZbpOuwA0fk62Ls7a9nFqo0o1rO-MZZW40NKw6SJ738f0vm3bjoVP6MON4rYOFeyGO1SijlFlNQVEYSaI6q8CqIpzREHXbDc2OMiMZRJ-A_yAImMaISh-qf3petNru8zEHv0hyVqDdjPdfw4uBUOdV45YggBAo6GHzwhKjsFogldEMvvS26RfqXXOalkmdBIIFK09MNRqRIZfkLjg6xhDTAoWerA for />]>
{'postList': [{'id': 13380505, 'title': 'Python接口自动化(四) https请求(SSLError解决办法)', 'url': '//www.cnblogs.com/canglongdao/p/13380505.html', 'isPublished': True, 'feedBackCount': 0, 'webCount': 4, 'aggCount': 0, 'viewCount': 4, 'datePublished': '2020-07-26T15:15:00', 'entryName': None, 'postType': 1, 'postConfig': 93, 'dateUpdated': '2020-07-26T15:15:00'}, {'id': 13380298, 'title': 'Python接口自动化(三)post请求四种传送正文方式', 'url': '//www.cnblogs.com/canglongdao/p/13380298.html', 'isPublished': True, 'feedBackCount': 0, 'webCount': 3, 'aggCount': 0, 'viewCount': 3, 'datePublished': '2020-07-26T14:13:00', 'entryName': None, 'postType': 1, 'postConfig': 93, 'dateUpdated': '2020-07-26T14:13:00'}, {'id': 13379676, 'title': 'Python接口自动化(二) 发送post请求的接口;发送post【data】;python中字典和json的区别', 'url': '//www.cnblogs.com/canglongdao/p/13379676.html', 'isPublished': True, 'feedBackCount': 0, 'webCount': 3, 'aggCount': 0, 'viewCount': 3, 'datePublished': '2020-07-26T11:13:00', 'entryName': None, 'postType': 1, 'postConfig': 93, 'dateUpdated': '2020-07-26T14:37:00'}, {'id': 13378194, 'title': 'requests高级用法', 'url': '//www.cnblogs.com/canglongdao/p/13378194.html', 'isPublished': True, 'feedBackCount': 0, 'webCount': 5, 'aggCount': 0, 'viewCount': 5, 'datePublished': '2020-07-25T20:48:00', 'entryName': None, 'postType': 1, 'postConfig': 93, 'dateUpdated': '2020-07-25T20:48:00'}, {'id': 13363702, 'title': '安装requests,requests基本使用', 'url': '//www.cnblogs.com/canglongdao/p/13363702.html', 'isPublished': True, 'feedBackCount': 0, 'webCount': 8, 'aggCount': 0, 'viewCount': 8, 'datePublished': '2020-07-23T22:45:00', 'entryName': None, 'postType': 1, 'postConfig': 93, 'dateUpdated': '2020-07-25T08:43:00'}, {'id': 11838333, 'title': 'python接口自动化(一)  发送get请求; 状态码对照表;', 'url': '//www.cnblogs.com/canglongdao/p/11838333.html', 'isPublished': True, 'feedBackCount': 0, 'webCount': 90, 'aggCount': 0, 'viewCount': 90, 'datePublished': '2020-01-07T21:57:00', 'entryName': None, 'postType': 1, 'postConfig': 93, 'dateUpdated': '2020-07-26T10:10:00'}, {'id': 12158718, 'title': 'python发送.xml格式的post请求;', 'url': '//www.cnblogs.com/canglongdao/p/12158718.html', 'isPublished': True, 'feedBackCount': 0, 'webCount': 372, 'aggCount': 0, 'viewCount': 372, 'datePublished': '2020-01-06T21:53:00', 'entryName': None, 'postType': 1, 'postConfig': 93, 'dateUpdated': '2020-01-06T21:53:00'}, {'id': 12152290, 'title': 'python logging', 'url': '//www.cnblogs.com/canglongdao/p/12152290.html', 'isPublished': True, 'feedBackCount': 0, 'webCount': 27, 'aggCount': 0, 'viewCount': 27, 'datePublished': '2020-01-05T14:06:00', 'entryName': None, 'postType': 1, 'postConfig': 93, 'dateUpdated': '2020-01-05T21:31:00'}, {'id': 12019740, 'title': '封装,调用函数,以及参数化', 'url': '//www.cnblogs.com/canglongdao/p/12019740.html', 'isPublished': True, 'feedBackCount': 0, 'webCount': 110, 'aggCount': 0, 'viewCount': 110, 'datePublished': '2019-12-10T22:55:00', 'entryName': None, 'postType': 1, 'postConfig': 93, 'dateUpdated': '2019-12-10T22:55:00'}, {'id': 12013291, 'title': '非ssl给163发邮件,报错,无解ing', 'url': '//www.cnblogs.com/canglongdao/p/12013291.html', 'isPublished': True, 'feedBackCount': 1, 'webCount': 48, 'aggCount': 0, 'viewCount': 48, 'datePublished': '2019-12-09T20:37:00', 'entryName': None, 'postType': 1, 'postConfig': 93, 'dateUpdated': '2019-12-09T20:37:00'}], 'postsCount': 34, 'pageSize': 10, 'categoryName': 'Python接口自动化'}

  

与fiddler抓包结果对比,结果一致。

越努力,越幸运!!! good good study,day day up!!!
原文地址:https://www.cnblogs.com/canglongdao/p/13380814.html