CNVD用了知道创宇的加速乐,这个东西有个反爬虫机制,第一次请求(只带了__jsluid)会只返回一个js文件。第二次请求的时候会带上 __jsluid cookies和JS解密计算出来的一个叫做__jsl_clearance的cookies值,只有这两个cookies验证匹配才认为是合法的访问身份。
所以只要得到__jsl_clearance并且和__jsluid一起放到请求头中就可以返回正常的页面了
解决方案有两种:
1、研究并处理返回的js文件得到__jsl_clearance。js是加密的,而且每次算法都不一样,没辙了
2、用selenium直接模拟浏览器访问,通过get_cookie方法直接拿到__jsl_clearance和__jsluid,成功
注意请求头要和webdrive的浏览器一样,尤其是User-Agent。因为我是放在ubuntu上跑的,所以是
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36',
就可以返回正常页面了
等之后项目上线我把会源代码扔到github上