安居客app端抓取数据包 分析数据包的签名 编写爬虫脚本

为什么要这么蛋疼,要从app入手来爬虫 ? 网页的数据不是也可以爬吗? 

对于少量数据的抓取,网页爬取是完全没问题的。 至少爬一个城市的房价信息是可以的。


但是,对于要抓取百万级数据量的爬虫,安居客做了多重反爬策略,如果你没遇到,说明你的数据量不大。

安居客的反爬策略有 验证码, 封IP。 而IP被封后,尝试过使用代理IP去绕过,不过不知道为什么一直返回404, 不知到安居客用的什么高级的技术。


所以才有了下面的抓取安居客app的数据包,进行解包分析。


环境: ubuntu + fiddler


1. 从抓取的数据包中, header是这样的:


GET /mobile/v5/sale/property/list?page_size=25&map_type=google&q=%E7%8F%A0%E5%85%89%E5%85%AC%E5%AF%93&city_id=13&with_broker_recommend=0&page=1&androidid=4dd00e258bbe295f&uuid=eed878f6-da69-46b4-b858-46deddbca485&cid=-1&pm=b638&version_code=321813&m=Android-SM801&qtime=20170813171637&from=mobile&app=a-ajk&v=5.1.1&i=990006203070023&_pid=23843&cv=10.10.2&o=icesky_msm8992-user%205.1.1%20LMY47V%201%20release-keys&macid=12a0fc64a12e5d8a1ef367d0bccb9690&_chat_id=0&manufacturer=smartisan HTTP/1.1
sig: 762a1b27c720f665e5a1c876ec8f9292
key: eb8cd4ef60fde7580260cf9cf4250a24
AuthToken: 
MemberToken: 
Accept: application/json
Content-type: application/json
nsign: 1000252865b4adb0f09986bb81114dd3011f
Host: api.anjuke.com
Connection: Keep-Alive
Accept-Encoding: gzip
User-Agent: okhttp/3.6.0


如果直接提交url的链接,会返回一个签名的错误。 从这个错误就可以知道,提交的信息中,需要签名信息。


也就是sig: 762a1b27c720f665e5a1c876ec8f9292 这个。


从每次提交的header来看,每次的签名都不一样。 因为提交的url数据里面,有一个是qtime,这个是与时间有关的数据。

qtime=20170813171637

这个很简单,通过

now=datetime.datetime.now()
qt= now.strftime("%Y%m%d%H%M%S")
 
就可以获得。
 
其他的url参数都是固定的,那么接下来就看是要怎样获取这个签名的方法。
 


©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页