资讯专栏INFORMATION COLUMN

python模拟登录segmentfault及备份文章(续)

mozillazg / 685人阅读

摘要:上一篇用模拟请求,最后没有拿到。对于跳转是由网页中的脚本所控制的,使用这种模拟真实浏览器行为,可以更容易保证其完成整个登录行为,相对地因为模拟的成本速度会慢一些。

上一篇用requests模拟请求,最后没有拿到cookies。今天偶尔看一篇HTTP相关的文章,发现在某些请求返回的header中会有set-cookie字段,很明显之前的失败应该是没有接收到包含这个字段的response。自己尝试人肉登录发现,cookie中的sf_remember字段是登录成功后跳转到首页时进行set-cookie的,而不是post的时候设置的。所以今天为了更好地模拟请求,使用request.Session来进行,这样cookie就不用自己去同步了,能更好地模拟浏览器行为

def _get_user_cookies(self):
        s = requests.Session()
        s.headers.update(headers)
        rep = s.get(target_url)
        post_url = "%s%s?_=%s" % (target_url, login_api_path,
                                  self.get_req_from_html(rep.text))
        data = {
            "mail": self.username,
            "password": self.passwd,
        }
        s.post(post_url, data=data)

通过反复登陆,我发现必须带要带headers,而headers必须的字段只有Referer,这样才能post成功,成功后会经过一个302重定向到首页,经历这个过程便能登陆成功。我查看登陆成功后的cookies,如下:

]>

并没有sf_remember这个字段,可能是因为我在post的时候没有使用remember字段(记住该用户那个),说明之前想当然认为该字段就是标记登录是不可靠的,标记登录的很有可能只是PHPSESSID这个值而已。下图登录后的所有cookies

因此模拟登录及备份文章就不需要phantomjs了,只用requests就足够,当然这只是对于segmemtfault来说,对于微博那种动态的,说不定就只能用Phantomjs,当然能分析出请求过程就能最大限度地使用简单方法来做自己想做的事

代码在这儿,增加了打印文章信息及耗时信息的功能,截图如下:

总结:

对于登录(或其它任何post行为)时由登录链接直接进行跳转的(跳转次数不限),可以直接用requests模拟,它的Session完全可以跟随这种跳转行为。
对于跳转是由网页中的js脚本所控制的,使用phantomjs这种模拟真实浏览器行为,可以更容易保证其完成整个登录行为,相对地因为模拟的成本速度会慢一些。而且这种类型,理论上也是可以用requests模拟出来的,但是需要事先去分析导致跳转的js代码,会比较麻烦且不一定能成为,如果成功则可以提速。比如网易云音乐的艺人页面,请求了两个doc,其实只有第二个是需要的。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/37674.html

相关文章

  • python模拟登录segmentfault备份文章

    摘要:继续尝试,成功,但是还是未登录状态。如前所说,用模拟登录拿到,然后带上去取文章备份就好了,用加了点并发,代码放到上了,地址,欢迎使用及拍砖以上 直接post登录失败 一般的网站确实直接post之后就登录成功了,然后拿到cookie想怎么玩就怎么玩。不过的确世事难料,失败在所难免。 首先是人肉登录,用chrome的network栏查看post了些什么东西,有三项: mail passw...

    DrizzleX 评论0 收藏0
  • python初学——网络编程之FTP服务器

    摘要:并可以实现,功能对用户进行磁盘配额,每个用户的可用空间不同使用模块检查用户目录的空间上文件大小,如果大于就不让传输。不允许超过磁盘配额。文件的传输过程中显示精度条。用户价值实现一套自己的服务端与客户端。 MYFTP是我写的模拟FTP服务端和客户端交互的程序。通过使用socket去模拟ftp的文件下载与上次两个核心功能。并不是使用真实FTP协议去实现。 基本需求 用户加密认证 # ha...

    TZLLOG 评论0 收藏0
  • 非计算机专业小白自学爬虫全指南(附资源)

    摘要:爬虫是我接触计算机编程的入门。练练练本文推荐的资源就是以项目练习带动爬虫学习,囊括了大部分爬虫工程师要求的知识点。拓展阅读一文了解爬虫与反爬虫最后,请注意,爬虫的工作机会相对较少。 爬虫是我接触计算机编程的入门。哥当年写第一行代码的时候别提有多痛苦。 本文旨在用一篇文章说透爬虫如何自学可以达到找工作的要求。 爬虫的学习就是跟着实际项目去学,每个项目会涉及到不同的知识点,项目做多了,自然...

    CarlBenjamin 评论0 收藏0
  • 首次公开,整理12年积累的博客收藏夹,零距离展示《收藏夹吃灰》系列博客

    摘要:时间永远都过得那么快,一晃从年注册,到现在已经过去了年那些被我藏在收藏夹吃灰的文章,已经太多了,是时候把他们整理一下了。那是因为收藏夹太乱,橡皮擦给设置私密了,不收拾不好看呀。 ...

    Harriet666 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<