12306确实很难攻下来!那么咱们就去把途牛给攻下

  2.思路:使用Charles抓包,找到关键数值,然后模拟请求,获取数据存入数据库。要点:需要保持cookies,如果要大量抓取需要配置IP代理。

  模拟查询操作,然后使用搜索关键字(价格)获得数据所在接口,注意:不要筛选域名,会把js文件漏掉。小编推荐大家加一下这个群:103456743这个群里好几千人了!大家遇到啥问题都会在里面交流!而且免费分享零基础入门料资料web开发 爬虫资料一整套!是个非常好的学习交流地方!也有程序员大神给大家热心解答各种问题!很快满员了。欲进从速哦!各种PDF等你来下载!全部都是免费的哦!只为帮助大家快速入门,所以小编在群里等你们过来一起交流学习呢!

  这里获取得数据就是所有航班信息,为什么有多个呢?因为是多次获取的,最后一个是最全。所以如果想要获取最全得信息就多请求几次。

  这个token值我们在Charles中搜索不到,只能在页面里搜索到这么一串数字,但显然跟我们需要的token不是一个类型,但有可能相关。

  于是退回搜索界面,重复几次发现token值会变化,证明与cookies无关,可能是js文件在本地生成token。这时候就要祭出我们的大杀器chorme开发者工具。

  (2)在下面的Console输入token,发现可以关联两个变量,输入可得,token的值就是tokenSecret的值。

  (3)接下来找一个相关的js进行断点调试,把tokenSecret加入Watch进行调试观察,找到tokenSecret生成的那一步骤

  (4)耐心调试分析,最终找到tokenSecret生成跟598行的代码有关,复制出来格式化

  可惜没有发现这里有生成tokenSecret痕迹,开发者工具继续一步步调试,最后找到tokenSecret

  6.数据展示因为没想到有啥用,所以代码里没有清理数据,直接po单个数据格式上来吧,有人可能会说,为啥不用Phantomjs等浏览器获取token,也是很不错的方法,但是,如果你要大量且增量爬取的话,这个速度太慢耗费cpu高,不是首要选择,例如遍历所有日期和航线的话.....算了,仅供学习吧。

相关阅读