之前写了一个爬虫项目,关于获取各大求职平台的数据,具体哪些平台就不列举了,感兴趣的话可以访问Findjob,时隔几个月后,突然有人issues
说boss直聘不能爬了,本片文章记录如何解决反反爬虫。
0x01 问题排查
收到issues后,我将以前的项目拉下,发现Boss直聘真的运行不了了,然后查看当初拼接的查询链接的html,返回是一个跳转页面,不没有返回结果页面,通过判断某些参数,返回跳转页来隔离爬虫,最后发现cookie
多了个__zp_stoken__
字段这个可能就是限制是否跳转的重要参数,通过copy这个参数加在情头求头的cookie中可以正常访问,然后我就百度boss直聘的__zp_stoken__
,听那些大佬说,这个参数是三千行js生成的,而且每天加密方式都会变化,我这还玩个毛线啊,果断放弃这条思路,这是文章链接,还有这个参数的存活也是有限制的,有人说可以使用5次,也有人说可以使用几分钟,但是我一次就gg了。
0x02 解决方法
解密js获取token
对于我来说,比登天还难,js大佬可以调试试试模拟浏览器
这种方法应该可以,但是我没尝试,因为浏览器会自动运行那段加密js,从而生成token进行验证,但是模拟浏览器太慢了,还是放弃了。寻找其他接口
终于在不经意间发现了boss直聘的手机端接口,一开始发现请求的cookie中还是有token字段,准备放弃,但是还是用postman测试了下可以获得数据,nice。而且也解决了web端只能获取前十页数据限制,目前测试没有任何验证。
1 | https://www.zhipin.com/mobile/jobs.json?city=101280600&query=java&page=27 |
不久之后我会将这个方法更新到项目中
0x03 总结
有时候成功可能就在不经意之间….