模拟登录豆瓣
使用cookie
- 注册一个豆瓣账号,登录成功后,打开F12,开启抓包功能,点击刷新页面,在众多包中找到www.douban.com/,复制Request Headers中的信息(除了Accept-Encoding),作为headers的内容,然后就可以直接使用request,get()直接得到登录成功后显示的页面的html了。
- 代码如下
url = ‘https://www.douban.com/’
headers = {
‘Accept’: ‘text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3’,
# ‘Accept-Encoding’: ‘gzip, deflate, br’,
‘Accept-Language’: ‘zh-CN,zh;q=0.9’,
‘Cache-Control’: ‘max-age=0’,
‘Connection’: ‘keep-alive’,
‘Cookie’: ‘bid=Lv8Qd36QXPU; __yadk_uid=eRxjcuIanuZ5tUH7Xz5jAUCItn8zF6pJ; ll=“118172”; _vwo_uuid_v2=D9C0533142C07295DC3DA18BD59371CFD|2e18d7d251648e4dc78cc50ef5e7cfd4; ct=y; __utmc=30149280; __utmz=30149280.1569199898.3.3.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; ap_v=0,6.0; push_noty_num=0; push_doumail_num=0; __utmv=30149280.20427; douban-fav-remind=1; _pk_ref.100001.8cb4=%5B%22%22%2C%22%22%2C1569205225%2C%22https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DRRO6R1TxtiSiWSyB-p-Ok_We1768Ll2OVfoRoVIHrqHDL_Jg-aXWgZEdo1KMdihF%26wd%3D%26eqid%3D880a4036008cf2d0000000045d881714%22%5D; _pk_ses.100001.8cb4=*; __utma=30149280.1883654966.1568973295.1569199898.1569205225.4; __utmt=1; dbcl2=“204270440:NJwLpuLYlOE”; ck=Mx2O; douban-profile-remind=1; _pk_id.100001.8cb4=8f0d5ecf350456ac.1568973295.3.1569205755.1569203283.; __utmb=30149280.9.10.1569205225’,
‘Host’: ‘www.douban.com’,
‘Referer’: ‘https://www.douban.com/’,
‘Upgrade-Insecure-Requests’: ‘1’,
‘User-Agent’: ‘Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36’,
}
html = requests.get(url=url,headers=self.headers).text
使用session保持会话,完成登录
- 进入豆瓣点击输入错误密码,登录,抓取到post提交的地址,包名basic,https://accounts.douban.com/j/mobile/login/basic,查看From Data,将里面的数据作为post参数data的数据
url1 = https://accounts.douban.com/j/mobile/login/basic
url2 = https://www.douban.com/
import requests
session = requests.session()
data = {
‘name’: ‘xxxx’,
‘password’: ‘xxxxx’,
‘remember’: ‘false’
}
session.post(url=url1,data=data)
html = session.get(url=url2,headers=headers).text
2. 以上简单两部就可完成模拟登录豆瓣,获取登录成功后才能看到的数据