爬虫小偏方二:修改referer后可以不用登录了

举报
云享专家 发表于 2019/10/17 10:42:35 2019/10/17
【摘要】 这些网站为什么会厚此薄彼呢? 是有些网站想获取SEO流量,就把从搜索引擎点击进入的访问控制放得较为宽松的原因。所以当你遇到如上两个问题时,先改一改referer试试,这样可以节省你不少的研究时间。这适用于有的爬虫是个临时任务或者一次性的爬虫,不用长期维护,你快速写好抓完数据就好的时候适用。

各位看官们在写爬虫程序时应该都会遇到如下问题:

- 你的爬虫程序开发时能正常抓取网页,但是正式大量抓取时,抓取的网站总是返回403或者500等;

- 你抓取的网站需要登录,要花大量时间去研究网站登录流程。


遇到问题1,我们第一反应是达到对方访问频率限制,IP被对方屏蔽了,然后就找更多IP和降低访问频率。

遇到问题2,就硬着头皮研究对方加密方法,或人肉登录后用机器把cookie保存下来,耗去好几天时间。



640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1



除了上述直接攻克的方法,还有一种取巧的方法可以绕过上述两个问题,就是修改http header中的referer来达到。注意这里是修改referer,不是修改user-agent。


简单科普一下referer是啥。


referer是告诉目标服务器(访问的网站),你是从哪儿点击进入当前页面的。

比如你在百度搜索猿人学,然后点击进入猿人学网站,这个时候通过抓包工具可以观察到,referer是类似如下样式:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1

就是告诉猿人学网站,你是从百度点击进入猿人学网站的。


啰嗦了一大堆,不好意思啊,回到正题。


当你遇到上诉两个问题时,你可以尝试把referer改成上述截图里的,是从搜索引擎点击进入的,你会发现有的网站,不会屏蔽从搜索引擎来的IP或者给这些IP的访问频率放得较为宽松。 甚至有的网站内容本来是要登陆才能看见,但是你把referer改成是从百度来的,你会发现居然不用登录也能看见了。


其实一句话就能说完,写了这么一大篇,额。。。


这些网站为什么会厚此薄彼呢?

是有些网站想获取SEO流量,就把从搜索引擎点击进入的访问控制放得较为宽松的原因。所以当你遇到如上两个问题时,先改一改referer试试,这样可以节省你不少的研究时间。这适用于有的爬虫是个临时任务或者一次性的爬虫,不用长期维护,你快速写好抓完数据就好的时候适用。 这个不是每个网站都有这样的待遇,在下遇到的有此情况的网站有某职业社交网站,某工商信息查询网站,某娱乐票务网站,就酱,只能说这么多。。。


ps:本篇不是把user-agent改成 Baiduspider ,让对方网站误认为是百度蜘蛛的做法。搜索引擎蜘蛛的IP范围,通过网站nginx日志是可以搜集完的,用点功夫的网站维护人员是知道这个IP是否为正规的搜索引擎蜘蛛。


你要问俺是如何发现的?

俺除了写写爬虫,还会写写网站,顺带做做网站运营工作,就会经常看nginx日志, 有天看日志时脑洞开了一下子。。。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。