【Python模拟登录知乎!你可能见过很多教程!这篇是史上最详细的!】
前言
前天看到一个爬取了知乎50多万评论的帖子, 羡慕的同时也想自己来尝试一下。看看能不能获取一些有价值的信息。
这就是referer起到的作用,服务器在接收到一个请求的时候先判断Referer是否为本站的地址。如果是的话就返回正确的资源;如果不是,就返回给客户端预先准备好的“警示”资源。
如果网站仅仅做到了这一步,而你的程序又恰好添加了User-Agent,基本上就可以顺利的蒙混过关了。
隐藏域
很多时候,我们模拟登录的时候需要提交的数据并不仅仅是用户名密码,还有一些隐藏域的数据。比如拿咱们CSDN来说,查看登录页
模拟登录
在正式的模拟登录知乎之前,我先来写个简单的小例子来加深一下印象。
浏览器测试
正常提交用户名密码的话如下:
我们不难发现,服务器端和客户端使用了相同的计算规则,这样的话我们就可以实现对客户端的登录请求进行一次简答的甄选了。正常的浏览器请求都是没有问题的。
用户名或者密码填写错误的情况如下:
运行的结果如下:
因为我们”不知道”服务器端是怎么对token处理的具体的逻辑。所以还是需要从客户端的网页下手。
且看下面的图片。
注意:这里仅仅是为了演示的方便,采用了对username字段失去焦点时计算token。实际上在网页被拉取到客户端浏览器的时候, 服务器会事先计算好token的值,并赋予到token字段的。所以大可不必计较这里的实现。
Python代码
实现效果如下:
实现的效果如下
更新版知乎模拟登陆
代码部分
验证效果
谢谢阅读,希望你能学会哦!