这是崔斯特的第五十九篇原创文章
模拟登陆的两种方式,你喜欢哪种 (๑• . •๑)
本期讲一讲模拟登录相关的东西,目标网站是Github
简单的Selnium
想说说简单的方法,使用浏览器登录,基本上就是傻瓜操作了。
如上图所示,登录设计的很简单,没有验证码什么的,代码如下:
|
|
分析请求之Requests
打开F12,使用错误的账号密码登录,复制curl
|
|
转为Python代码,
|
|
注意两个地方,cookies和参数,先来看看参数,稍微特别的就是authenticity_token
,感觉是验证。Ctrl+Shift+F
打开搜索,最终在返回的html中找到
|
|
authenticity_token
解决了,下一步想办法获取cookies
继续搜索_gh_sess
与_octo
关键字,看到有这样一段js
|
|
猜测cookies不是本地生成,查看打开Github首页的请求,果然在Response Cookies
中找到了相关数据,那么使用Session
就可以维持会话了。
|
|
对比
Selenium:
- 优点:简单、无脑,不用分析复杂的网页请求,不用保持会话状态
- 缺点:速度慢,速度慢,速度慢(某些情况下会出现js加载不全)
Requests:
- 优点:速度快,可以增加自己对cookies登陆的理解
- 缺点:需要花时间寻找相关参数
如果对Github感兴趣,可以直接使用 Github API
最近在使用Selenium
处理验证码,发现很强大,如果模拟请求,难度会非常大。