今天详解一篇生物谷的模拟登录,模拟登录主要应用在需要登录才显示全文或者是登录才能访问的网站用,往往给爬虫工作带来着很大麻烦,网站做模拟登录有时候还会加一些验证码滑块,加密之类的,之前有遇到过了就不再翻了,之后遇到了会出教程。话不多说直接开始
1,还是先来欣赏一下板砖专用图。
2,网站地址ok,首先咱们先注册一个账号,这里我用的是接码平台上面提供的号码,这建议还是不要用自己的手机号注册使用好一些。ok,注册好之后去到登录页看一下是个什么情况
2.1,我们选择账号密码登录,F12先看一下接口是个啥。
可见账号和密码都是明文,有两个参数为(checkCode,csrf_token)目测checkCode因该是和密码一致
csrf_token目前还不知道是什么
2.3看一下respone返回的是什么
,算了算了跑路了些什么教程
2.4,这里可能是我刚才测试的时候调试的次数多导致的,建平时还是使用上代理ip好一些。 这里我们清理一下cookies
2.5,重新发起请求看一下respone里面内容,发现这里有一个csrf_token。那就没什么意思了,对比此csrf_token非请求csrf_token。盲猜这个csrf_token是下一次请求时候使用的。这就非常明确了。开始写代码
3,首先发送一个假请求拿到一个真csrf_token
data = {
'account': '*****',
'username': '*****',
'password': '*****',
'checkCode': '',
'remember': '0',
'csrf_token': 'f2a1512f0e7cc33ad04ea757c05f5675',
'grant_type': 'password',
'client_id': 'news-bioon',
'redirect_uri': 'https://www.bioon.com/user/doLogin.do',
'state': '',
'referer': '',
}
csrf_token = requests.post('https://login.bioon.com/login/do_login', cookies=cookies, headers=headers, data=data).json()['csrf_token']
然后使用真的csrf_token做登录
data = {
'account': '*****',
'username': '*****',
'password': '*****',
'checkCode': '',
'remember': '0',
'csrf_token': f'{csrf_token}',
'grant_type': 'password',
'client_id': 'news-bioon',
'redirect_uri': 'https://www.bioon.com/user/doLogin.do',
'state': '',
'referer': '',
}
res = requests.post('https://login.bioon.com/login/do_login', cookies=cookies, headers=headers, data=data).json()
print(res)
4,有的同学说到cookies问题,这个嘛...之后会更一篇session会话保持的文章说明一下,通用于这一类情况处理时的cookies问题,这里主要讲模拟登录的概念。
5,细心的朋友发现我写文章都是先简单看一下整个要采集的页面情况接口情况,心里有一个构思,然后开始写代码,到写代码环节就是形同流水一般,一贯而通。我也很推荐这种方式,先统一走一遍再有了思路,想好避雷的地方再开始写,而不是拿到一个网站上来就搞。越高越发现到处都是坑。
6,朋友们如果有什么想看的网站爬虫可以留言网站地址,我看到后会更。