本教程为进阶教程,普通用户请看隐藏列表页(栏目页)抓包分析教程
抓包工具:
抓包可选傲游浏览器或其他谷歌内核浏览器或任何抓包工具。
抓包时注意,在网页上鼠标右键-审查-网络(Network)才能进入抓包界面:
网页的访问方法(Method):有GET和POST两种,GET就是【一条网址】,而POST是【一条网址+投递参数】,一般都是GET方法,但是如果抓包列表页地址时碰到POST方法(比如百度百科)就需要特殊处理下才能使用到软件上进行采集
抓包过程:
以今日头条为例,使用水淼万能文章采集器等多款软件辅助
1、开始抓包:
当下拉滚动条到底部时,该网页就会刷新出新的新闻列表,通常抓包会抓到很多地址,可以通过响应正文(Response)是否包含目标内容(如列表页中的文章标题、文章地址)、响应内容的大小(一般注意大尺寸)来判断哪个才是新闻列表的刷新读取地址(后面简称刷新地址)。
我这里抓包到的刷新地址是:http://toutiao.com/api/article/recent/?...
复制刷新地址的方法
可以右键单击抓包列表中的刷新地址弹出菜单-Copy Link Address或者左键单击刷新地址Headers-General-Request URL-选中地址-右键菜单-复制
然后继续抓下一个的刷新地址:http://toutiao.com/api/article/recent/?...
使用水淼文章组合工具集比对-网址参数比对比较这2个刷新地址,可以发现有3个参数产生了变化。
2、分析抓包数据:
在抓包时可以发现新闻列表的响应正文是JSON数据,因此使用水淼Json解析助手来分析这3个参数是怎么来的:
复制响应正文的方法
可以右键单击抓包列表中的刷新地址弹出菜单-CopyResponse或者左键单击刷新地址Response-右键菜单-全选-复制
可以看到,Json数据中的 next.max_behot_time 节点的值构成了刷新地址中的第一个 max_behot_time 参数
而Json数据中的 data.[15].create_time 节点(也就是新闻列表中的最后一个即序号为15的项目的 create_time)的值构成了刷新地址中的第二个 max_create_time 参数
而第三个 _ 参数我们可以使用一个动态时间戳(实际上这个参数没什么作用,可以保留抓包时的原值,也可以使用一个动态值)。
结果构建出来的模板刷新地址:http://toutiao.com/api/article/recent/?source=2&count=15&category=__all__&max_behot_time=[#next.max_behot_time#]&utm_source=toutiao&offset=0&max_create_time=[#data.[15].create_time#]&_={#毫秒时间戳#}
然后发现这个今日头条还要求提供Cookies,否则抓取到的新闻列表就不准确,因此在抓包时可以到请求里复制出Cookies:uuid="w:2336ce5e12794f1c9d90ea07c2d4dc47"; tt_webid=19421740959; csrftoken=19f08b2051f0abbb85ee449e648fb3ad; CNZZDATA1258609184=1681606143-1466332000-%7C1466337400; _ga=GA1.2.451981020.1466332236; utm_source=toutiao
3、最后采集列表页:
采集好列表页后,在万能文章采集器的【采集文章URL列表】对这些列表页采集出文章地址列表时,请保持【采集列表页URL(动态加载)】窗口处于打开状态,这样才能调用该窗口中的Cookies设置,因为今日头条刷新新闻列表时要求Cookies。
下面是采集文章地址的设置: