1.序言
因为工作内容原因需要对四库一平台全站数据进行抓取,这次爬取经历了两次方案进行抓取,现在一一记录下来。网站有多处反爬,今天在这里会对所有反爬与爬虫细节进行细化分析。
2.正文
首先打开网站
这里有个数据服务,点击进入就会有具体数据的列表页了。
今天只介绍企业数据如何进行抓取,因为其他的数据都是相同的手法,了解了一个其他的就知道了。我使用的是chrome浏览器,F12进行检查。
可以看见网站返回的内容都是进行加密的,这个时候我们就要进行查看其加密的方式是怎么样的了,这样才能进行解密。
如何查找的过程就不细说了,最终可以发现其是通过aes进行加密的,上面也给了key和vi两个参数,拿到这两个参数就可以进行解密,然后查看返回的具体内容了。
如果这个网站就这么简单的话,也就没啥值得说的了,其重点就是在点开详情页的验证码破解上
当点开详情页的时候会让点击一个验证码才可以查看具体的内容,而该验证码是使用了极验的第三代点击验证码。F12进行检查。
仔细查看返回的headers就会发现多了一个accessToken,而这个参数就是点击验证码以后返回的参数,所以当去请求这个详情页的时候必须要带上这个accessToken才会返回正确的请求内容,而好多人都是卡在了这个地方,这里我用了两种方式进行解决的,一开始考虑使用自动化浏览器去进行点击,然后将验证码发送给第三方,返回坐标值之后再进行验证码的点击,这种方式就是导致时间长,因为需要截图,发送给第三方,返回坐标值,进行点击,然后才会返回正确的accessToken。导致没法高并发,而且因为是进行验证码的坐标点击,有的时候识别率还是很低的,而且四库一平台的网站会进行ip的封禁,如果在使用自动化浏览器的时候携带上代理就会导致访问的详情页总是重定向至首页,所有第一个方法就pass了。
第二种验证码的破解,是专门围绕着极验去破解的,其实极验验证码会有两个参数,一个是challenge,另外一个是validate,其实破解这两个参数的话,就会直接返回accessToken这个参数,这样就可以使你的爬虫程序进行高并发,而且相比于第一种方法就更稳定,但是破解验证码的时候有一个小坑是关于使用代理的地方。这个网站爬取所有的请求url都需要加上代理,可是代理使用错误就会返回401。
这个网站还有一个细节
就是列表页只会展示前450条数据,所以想要获得更多的数据需要添加分级条件
添加注册属地以及资质名称的条件进行搜索,就可以爬取更多的数据,但是仔细发现就会看到url是经常变化的
qy_region是注册属地的参数,qy_type是资质类型的参数,注册属地的参数是会频繁变化,所以想要获得正确的需要进行上一级的url获取,这个没有反爬,仔细去找就能发现。
这是这个网站的大致反爬与爬取的细节,现在俺的程序已经正常运行
数据也爬取了很多,有啥问题或者交流的可以随时私信俺,有问必答