请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

解决反爬问题

老师好,在爬取cnblogs时,大概爬取100多条数据时(没设置DOWNLOAD_DELAY),遇到
2019-09-06 11:14:26 [scrapy.downloadermiddlewares.redirect] DEBUG: Redirecting (302) to <GET https://account.cnblogs.com/signin?returnUrl=https%3A%2F%2Fnews.cnblogs.com%2Fn%2F630237%2F> from <GET https://passport.cnblogs.com/user/signin?ReturnUrl=https%3A%2F%2Fnews.cnblogs.com%2Fn%2F630237%2F>

我设置了随机的user-agent(fake-useragent),维护了一个50个ip的ippool(付费的),每次请求都是随机的ip,网站是如何识别出我是爬虫的,要求我进行登入。如果我不想通过登入的方式继续爬虫,应该如何解决?或者我如何去了解这个网站的反爬机制?

正在回答

2回答

bobby 2019-09-12 17:18:47

cnblogs对列表页的数据做了权限控制,可以使用浏览器访问一下,前几页的数据不用登录就能访问,但是后面的页码,比如8页之后的数据即使用浏览器也需要登录之后才能访问,所以cnblogs应该是通过ip做了限制,比如多长距今多长时间以前的url只有登录才能访问

0 回复 有任何疑惑可以回复我~
bobby 2019-09-09 11:35:02
  1. 你的ip是否每次请求都是随机切换的?

  2. 有没有在settings中设置cookie_enabled为false?如果没有的话那么后续每个请求的cookie都可能会是一样。只要cookie是一样的,即使你的ip是变动的,网站也能通过cookie取出你是哪个用户

  3. 50个ip其实也不算多, 一般网站除了通过cookie反爬以外。通过ip的频率限制也是一个非常常用的手段。比如网站通过每分钟每个ip不超过十个访问,这种配置方式非常灵活。至于什么规律需要自己去尝试,每个网站都不一样,所以不论如何最好都要控制你的爬取频率而不是一味的不限速

0 回复 有任何疑惑可以回复我~
  • 提问者 DreamHacker #1
    ip设置为了500个,如果说是通过每分钟每个ip的访问来判断,我觉得scrapy全速爬取每分钟5000左右的请求应该达不到。
    然后听了老师建议把在settings文件中改了配置
    cookie_enabled = false
    还是存在同样的问题。倒不是说爬取多少数据的问题,我就比较好奇网站后台是如何识别出我的所有ip然后定向到一个输入账号密码的网站导致我爬取失败的。
    老师你不是说要出这个网站的视频吗,你爬取的时候没有这样的问题吗。伯乐在线,单ip单useragent都能全速爬,这网站可不行。
    回复 有任何疑惑可以回复我~ 2019-09-09 14:32:09
  • bobby 回复 提问者 DreamHacker #2
    你留下qq 我加你看看
    回复 有任何疑惑可以回复我~ 2019-09-10 11:45:15
  • 提问者 DreamHacker 回复 bobby #3
    861529752
    回复 有任何疑惑可以回复我~ 2019-09-11 11:42:11
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信