摘要:继续尝试,成功,但是还是未登录状态。如前所说,用模拟登录拿到,然后带上去取文章备份就好了,用加了点并发,代码放到上了,地址,欢迎使用及拍砖以上
直接post登录失败
一般的网站确实直接post之后就登录成功了,然后拿到cookie想怎么玩就怎么玩。不过的确世事难料,失败在所难免。
首先是人肉登录,用chrome的network栏查看post了些什么东西,有三项:
password
remember
地址是http://segmentfault.com/api/user/login?_=0b1bc2ca95203748b804e69ac2cfab06,后面那个32位的token是随机的,每次都不一样。怎么找到这个值呢?用chrome工具栏进行调试打断点找(记得先按"{}"格式化代码),从发XHR的地方开始,用call stack逐步缩小范围,直到找到token被加上的地方,值也就能找到了。这个过程还是很麻烦的。。。
最终能找到这个值为window.SF.token,你百度一下它会发现segmentfault上已经有文章写过用node模拟登录,不过在js文件里全局搜索_=这种方法略投机。我表示我完全没有参考它,因为我找到window.SF.token去搜索后才发现那文章,不然直接拿来主义了
这个值附在window上,没法js压缩混淆,所以肯定有个赋值的地方,稍微找找,发现就在登录页的html里。
用python获得网页内容,提取出含token的那段代码,包括for循环中的数字,千方百计把token计算出来,拿去post,失败。加上headers和cookies伪装浏览器,注意,当前这个cookies应该是匿名cookie,以防万一加上的,里面没有有效的能标记已经登录的session值。继续尝试post,成功,但是还是未登录状态。重新人肉登录检查发送xhr的地方,还有好几处,稍微尝试了一下模拟这几个发送,没有成功。经过分析发现,有效登录标记是一个叫sr_remember的cookie值,但具体过程我确实没分析出来,现在的登录里回调和跳转太多了,分析过程就很麻烦,再用python模拟单个请求,很低效且不易成功
使用phantomjs那就用最简单的方法,在python中直接模拟浏览器的js运行环境,试了试Ghost.py,大坑,好像是网页中有用到localStorage等的地方就直接崩溃了,而且它依赖于PySide,这个真的是非常费事,要装的朋友切忌选择下载源代码编译安装,否则你会发现pip install PySide之后半天没动静,前者至少都能给你点动静(编译估计要几十分钟吧)。PyV8安装没成功,好像是Ei Capitan的问题,放弃。
最后就选择了selenium+Phantomjs, selenium可以直接驱动phantomjs,很方便。这一瞬间我感觉自己相当明白为什么PySpider里要用Phantomjs了。
如前所说,用phantomjs模拟登录拿到cookie,然后python带上cookie去取文章备份就好了,用tornado加了点并发,代码放到github上了,地址,欢迎使用及拍砖
以上
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/37681.html
摘要:上一篇用模拟请求,最后没有拿到。对于跳转是由网页中的脚本所控制的,使用这种模拟真实浏览器行为,可以更容易保证其完成整个登录行为,相对地因为模拟的成本速度会慢一些。 上一篇用requests模拟请求,最后没有拿到cookies。今天偶尔看一篇HTTP相关的文章,发现在某些请求返回的header中会有set-cookie字段,很明显之前的失败应该是没有接收到包含这个字段的response。...
摘要:时间永远都过得那么快,一晃从年注册,到现在已经过去了年那些被我藏在收藏夹吃灰的文章,已经太多了,是时候把他们整理一下了。那是因为收藏夹太乱,橡皮擦给设置私密了,不收拾不好看呀。 ...
摘要:在这之前,还是有必要对一些概念超轻量级反爬虫方案后端掘金前言爬虫和反爬虫日益成为每家公司的标配系统。 爬虫修炼之道——从网页中提取结构化数据并保存(以爬取糗百文本板块所有糗事为例) - 后端 - 掘金欢迎大家关注我的专题:爬虫修炼之道 上篇 爬虫修炼之道——编写一个爬取多页面的网络爬虫主要讲解了如何使用python编写一个可以下载多页面的爬虫,如何将相对URL转为绝对URL,如何限速,...
阅读 2010·2023-04-26 01:33
阅读 1642·2023-04-26 00:52
阅读 1008·2021-11-18 13:14
阅读 5273·2021-09-26 10:18
阅读 2871·2021-09-22 15:52
阅读 1472·2019-08-29 17:15
阅读 2932·2019-08-29 16:11
阅读 1019·2019-08-29 16:11