技术科普

requests模拟知乎登录

2018-05-14 18:47:19 32
import requests
try:
    import cookielib
except:
    import http.cookiejar as cookielib

以上是一种兼容写法

pyhon2 cookie是直接放在cookielib 所以可以直接 

import cookielib

python3 是放在http里面的的cookiejar里的

 import http.cookiejar as cookielib


模拟登录:

agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36"
header = {
    "HOST":"www.zhihu.com",
    "Referer": "https://www.zhihu.com",
    'User-Agent': agent
}
#获取xsrf code
response = requests.get("https://www.zhihu.com",headers=header)
text = ''
match_obj =  re.match('.*name="_xsrf" value="(.*?)"',text) 
if match_obj:
    print(match_obj.group(1))
return ""

发送请求

response_text = requests.post(post_url, data=post_data, headers=header)

但是我们一般不是直接使用requests.post方法而是定义一个session值,session是一个长链接,每次请求的时候可以直接用

session = requests.session()

改造过后台吧requests处全部替换成session,例如改动的:

response_text = session.post(post_url, data=post_data, headers=header)


这个时候可以直接使用cookie.save()保存cookie

session.cookies.save()

直接这样是会报错不存在这个方法,这个时候需要调用cookielib的一个方法如下:

session.cookies = cookielib.LWPCookieJar(filename="cookies.txt")

这样就可是使用cookie.save()方法了。


image.png