requests浏览器登录后手动设置cookies

用于登录验证过于复杂的网站,难以完全用代码模拟登录,则可以手动通过浏览器登录后获取cookies保存到文本,然后再通过读取和更新cookies进行后续操作

#导入requests包
import requests

targetURL = '目标网站地址'

#设置头UA
headers = {"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"}

#开启一个session会话
session = requests.session()

#设置请求头信息
session.headers = headers

#申明一个用于存储手动cookies的字典
manual_cookies={}

##打开手动设置的cookies文件
#部分网站需要滑动验证,这里通过浏览器登录成功后获取cookies手动存到文本来绕过验证,后续cookies自动更新
with open("manual_cookies.txt",'r',encoding='utf-8') as frcookie:
    cookies_txt = frcookie.read().strip(';')  #读取文本内容
    #手动分割添加cookie
    for item in cookies_txt.split(';'):
        name,value=item.strip().split('=',1)  #用=号分割,分割1次
        manual_cookies[name]=value  #为字典cookies添加内容

#将字典转为CookieJar:
cookiesJar = requests.utils.cookiejar_from_dict(manual_cookies, cookiejar=None,overwrite=True)

#将cookiesJar赋值给会话
session.cookies=cookiesJar

#向目标网站发起请求
res = session.get(targetURL)

#将CookieJar转为字典:
res_cookies_dic = requests.utils.dict_from_cookiejar(res.cookies)

#将新的cookies信息更新到手动cookies字典
for k in res_cookies_dic.keys():
    manual_cookies[k] = res_cookies_dic[k]

print(manual_cookies)

#重新将新的cookies信息写回文本
res_manual_cookies_txt = ""

#将更新后的cookies写入到文本
for k in manual_cookies.keys():
    res_manual_cookies_txt += k+"="+manual_cookies[k]+";"

#将新的cookies写入到文本中更新原来的cookies
with open('manual_cookies.txt',"w",encoding="utf-8") as fwcookie:
    fwcookie.write(res_manual_cookies_txt);