同样的python代码,为什么仅仅是账号不同就能影响登录结果?

最近写了一个爬虫,用的request,纯属自娱自乐,但是写的满头的包,不知道如何处理,希望各位前辈们能指点下晚辈,给晚辈提供些思路。
目前是遇到了两种奇怪的情况:
1.完全相同的代码,换了一个账号就能正常获取到cookie,原来的账号就死活不能,这可能是什么原因?我尝试了在浏览器上手动登录,发现是可以正常登录的,我觉得可能是IP的问题,但是距离上次我拿这个账号测试已经过去将近半个月的时间了,时间间隔这么久,而且其他的账号就能获取cookie,感觉又不大可能是IP的问题
2.哪怕是这个正常登录的账号,在尝试请求数据的时候,同样会返回未登录,但是我看session里面确实有了对应的cookie,而且cookie也是完整的,不过我发现浏览器每次请求时,服务器都会返回新的cookie,
对比了下,发现有两个cookie是变化的,解析出来是时间戳,是因为这个原因所以返回的未登录吗?可是我用的session,不是应该会自动管理cookie吗,而且我看浏览器请求携带的cookie也确实是上次请求浏览器返回的啊,搞不明白
另,如果想学习爬虫的话,有哪些书籍或者网站推荐吗?目前在看那个封面是穿山甲的Python网络爬虫权威指南以及看B站上的相关视频,但是感觉书上说的、视频讲的和写代码时遇到的完全不是一种情况

阅读 122
avatarAI BotBETA

回答

1. 完全相同的代码,换了一个账号就能正常获取到cookie,原来的账号就死活不能,这可能是什么原因?

这通常与以下几个因素有关:

  • 账号状态:某些网站会针对账号进行风险检测,如果账号被标记为高风险(例如频繁尝试登录失败、来自不同IP地址的频繁请求等),可能会被暂时锁定或限制登录。
  • IP地址:虽然你提到时间间隔较久且其他账号能登录,但IP地址仍然可能是一个因素。有些网站会限制来自特定IP地址的登录尝试,特别是如果该IP地址之前有过不良记录。
  • Cookie管理:不同的账号可能生成不同的Cookie,如果Cookie管理不当(例如过期、被篡改或未正确存储),可能导致登录失败。
  • 验证码机制:某些网站在检测到异常登录行为时,会要求输入验证码。如果代码没有处理验证码,可能导致登录失败。

2. 正常登录的账号在尝试请求数据时返回未登录,但session里确实有了对应的cookie,cookie也是完整的,是时间戳的原因吗?

  • 会话保持:服务器可能会通过更新Cookie中的时间戳来保持会话的有效性。如果爬虫没有正确处理这些更新的Cookie(例如,没有每次请求都携带最新的Cookie),可能会导致会话失效。
  • Cookie作用域:确保爬虫在发送请求时携带了所有必要的Cookie,包括那些可能由服务器在后续请求中设置的。
  • 请求头差异:浏览器和爬虫在发送请求时可能会包含不同的请求头。如果服务器依赖特定的请求头来验证会话,那么爬虫可能需要模拟这些请求头。

学习爬虫的资源推荐

  • 书籍

    • 《Python网络爬虫开发实战》(封面是穿山甲的那本)是一个不错的选择,它涵盖了从基础到进阶的爬虫开发知识。
    • 《网络爬虫技术揭秘:Python实战》也是一本值得一读的书籍,它深入讲解了网络爬虫的工作原理和实战技巧。
  • 网站和视频

    • B站上有许多关于Python爬虫的视频教程,适合初学者入门。
    • GitHub上的开源项目和社区也是学习爬虫的好地方,你可以关注一些与爬虫相关的仓库和讨论区,获取最新的技术和解决方案。
    • 还有一些专门的爬虫论坛和社区,如Scrapy官方文档和社区、Selenium官方文档等,它们提供了丰富的资源和讨论空间。

希望这些回答和建议能对你有所帮助!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏