最近在爬区块链相关的快讯,上周巴比特改版后重写了爬虫,跑了一天就挂了。原来是网站使用了加速乐的服务,爬虫每次都返回521的状态码。
浏览器访问网站时:
第一次请求:返回521状态码和一段js代码。js会生成一段cookie并重新请求访问。
第二次请求:带着第一次得到的cookie去请求然后正确返回状态码200
而爬虫不能像浏览器一样执行js所以一直报错521
解决办法:
让爬虫模拟浏览器的行为:
将返回的js代码放在一个字符串中,然后利用execjs对这段代码进行解密,得到cookie放入下一次访问请求的头部中。
具体过程:
将返回的这段js代码整理下:
<html>
<body>
<script language=&#