自动化爬取json_爬虫解决方案之爬取“搜狗引擎”

主题.jpg

1.爬取的背景

为甚我们会提到“搜狗引擎爬虫呢”,一切根源来自于最近需要爬取领英的会员资料,我们可以通过人名 | 领英的方式具体的搜索以查询结果,这只是爬取领英的其中一个方法,具体的方法我们之后会讲,大家可以期待一下哦!,好了,讲回正题,我们该如何爬取“搜狗引擎”呢,我们先去首页看看

搜狗首页.png

我们可以看到每个链接的右下角都会有对应的时间和快照,这个是什么意思呢,因为我们爬取领英时需要登录,如果我们不登陆的去访问领英,可以看到的只是一部分信息,但是这些信息也是足够了,问题在于我们不是每次访问领英都可以看得到具体的会员页,它会根据IP访问次数来限制你查看的会员页,比如:你查看10个左右的会员页之后会自动跳转到登录页,而我们并不想登录,原因之后再说。所以,在我们没有足够的IP去访问领英页面的时候怎么办???

答案就是:去爬“搜狗引擎”已经爬取好的缓存页-也就是快照页,这样我们等于变相去“假装”拥有大量IP去爬取领英了。

2.搜狗的反爬措施

搜狗虽然名气没有百度的大,但是也算是搜索引擎中比较知名的,毕竟可以背靠“腾讯”大佬,靠着微信搜索上一波流量,可以说,搜索在反爬这一方面也是挺下功夫的,大家可以看看“搜狗”关于爬虫的招聘

搜狗招聘.png

具体可以参考这里

不过他们貌似对于搜索方面的反爬限制的不是很严格,毕竟对于搜索来说,过于严苛的反爬反而对于用户的交互不是很理想, 我们来看看搜索之后的请求Cookie。

cookie.png

经过我测试,发现其中有几个参数异常重要,也是影响搜索反爬虫措施的关键参数,SUID、SNUID以及SUV。

SUID

SUID具体的含义可以自行百度,这里只讲述它生成的过程。当我们访问sogou搜索首页的时候,set-cookies中便会生成一个SUID参数的内容,除非重启浏览器,不然短时间内SUID并不会改变。SUID的值应该是sogou服务端随便分配的,只有当重新开启一个session时它的值才会更新。

SNUID

SNUID是sogou反爬虫的重点,sogou也是对同一个SNUID访问次数做了限制,而超过限制后,会跳转到验证码页面,只有输入验证码重新验证以后,SNUID才会更新,访问才能继续进行。那么SNUID是如何生成的呢?经过测试,应该是由javascript生成的,当然前提是要有SUID,SUID是生成SNUID的基础。

SUV

SUV参数内容是由javascript生成的,测试并没有发现其对于反爬虫有何影响,故本文不做详细介绍。

被屏蔽现象

同样,要解决反爬虫问题,我们先来看看触发反爬虫的现象。当同一个SNUID访问次数受限后,继续访问sogou会跳转到一个验证码页面。

URL地址:

http://www.sogou.com/antispider/?from=%2fweb%3Fquery%3d152512wqe%26ie%3dutf8%26_ast%3d1488957312%26_asf%3dnull%26w%3d01029901%26p%3d40040100%26dp%3d1%26cid%3d%26cid%3d%26sut%3d578%26sst0%3d1488957299160%26lkt%3d3%2C1488957298718%2C1488957298893

大家可以看一下,是因为访问的过于频繁,导致需要验证码。

验证.png

这里,搜狗有个心机,他们说是由于IP问题,导致大多数人会从IP这点去考虑,然而,真相往往隐藏在深处.....

看看这个页面的源码

HTTP/1.1 200 OK

Server: nginx

Date: Thu, 27 Oct 2016 04:41:19 GMT

Content-Type: text/html<

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值