一个模拟真实登录案例
import time
import requests
from bs4 import BeautifulSoup
def captcha(data):
with open("captcha.png", "wb") as f:
f.write(data)
return input("请输入验证码:")
def login():
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36"}
ssion = requests.session()
html = ssion.get("https://www.zhihu.com/", headers=headers).content
soup = BeautifulSoup(html, "lxml")
_xsrf = soup.find('input', attrs={"name": "_xsrf"}).get("value")
captchaURL = "https://www.zhihu.com/captcha.gif?r=%d&type=login" % (time.time() * 1000)
captcha_data = ssion.get(captchaURL, headers=headers).content
formdata = {
"email": "123456789@qq.com",
"password": "ABCDEFG",
"captcha": captcha(captcha_data),
"_xsrf": _xsrf
}
ssion.post("https://www.zhihu.com/login/email", data=formdata, headers=headers)
html = ssion.get("https://www.zhihu.com/settings/account#signin", headers=headers).content
with open("myhtml.html", "w") as f:
f.write(str(html.decode('utf-8')))
if __name__ == "__main__":
login()