1. 程式人生 > 實用技巧 >Python介面自動化(五) cookie繞過驗證碼登入

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:\Users\Administrator\AppData\Local\Programs\Python\Python37\python.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抓包結果對比,結果一致。