分享

反反爬虫系列(二)

 鹰兔牛熊眼 2019-01-28

我之前的一篇文章大概讲到过如何批量撸这个网站的数据,先吐槽下南京车300,目前我所在的公司的母公司。进入估价页面,显示浏览器指纹验证,再是拖滑块,然后文字点击。怎么就没有销售出来骂,什么狗屎用户体验。


也对,流量都在app上,pc端就是来肝爬虫的。对于做机器学习要搞OCR文字点击的,可以去采集训练集(斜眼笑)


好了,滑动和文字验证今天咱们不提,就单纯讲讲利用cookie做文章的反爬虫


进入估价页面,长酱色的:


然后咱们看源码,却是长酱色的:



好了,这里我提一下为什么一定要看源码,很多刚出道的爬虫工程师,在进入页面后,习惯性的就是检索元素,然后抓抓包看看api之类的,接着写脚本。


然后一请求,这是怎么回事啊?拿到一段html和原网页不同,里面嵌套一大段JavaScript。说到这里,我们来看看这段js


首先是定义的一个方法


大概就是讲重新构造一个url的参数。重点是下面这段 eval()开头的,我们将eval里的js格式化后,搜索 setParam


大概可以知道,这个大框里就是我们要的东西,setParam就是向url里重新写一个时间戳,然后重点就是

document.cookie = 'spidercooskieXX12=' + t + ';path=/;',
document.cookie = 'spidercodeCI12X3=' + r + ';path=/;',


可见,这个要向cookie写入两个东东。一个是 spidercooskieXX12 一个是 spidercodeCI12X3。那么这两个的所对应的 t 和 r是什么


继续回到刚刚的大框里,可以看到

t = '1547796252',
r = o(t + '');
r = r.slice(1632) + r.slice(016),


那就简单了, t是一个像时间戳的东东;r呢,输出它就行了呀。然后我们把大框改写一下,加一个console输出r和t


结果呢,会报错。因为纯粹的js环境没有DOM,在这里我们需要在文件里添加

var window = {};
var document = {};
window.document = {};
window.location = {};
window.location.href = 'http://www.';
window.location.search = 'null';


如果在chrome里调试,就不用管,但是要把

window.location.href = setParam('rt'new Date().getTime()


这句删了,不然还没看到输出,页面就刷新了

然后运行


拿到数据。然后,再次请求刚刚的url,同时在cookie加入这俩参数,就可以看到正确的页面了


总结:

今天这个偏简单。但是依照笔者在工作中所遇到的实际情况,采用这样的思路做反爬虫的网站挺多,比如瓜子二手车

  1. 上一次咱们讲的是全局的token

  2. 这一次咱们讲的是每个页面的token

  3. 下一次咱们讲每个request的token


另外,咱们拿到数据是一回事,工程上又是一回事,不得不说车300在反爬虫上下了很大的功夫,据说老板也是做爬虫出生的。

嗯,它的app上面,用了签名验证,这个我没逆向过,拿不到如何md5加密的,所以暂时也没思路。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多