JS逆向之python+node爬取头条

在最近的需求中需要对今日头条的数据进行爬取,于是花了两天多的时间,终于爬下来了,下面直接进入正题。

分析思路

在爬取网站之前,按照套路先打开网站分析一下,确定一下整体的思路。
在这里插入图片描述
主要是获取web网站主页下的资讯新闻url,再通过url拿到详情页的正文,先打开开发者工具对主页进行抓包
在这里插入图片描述
主页的html没有数据信息,页面数据应该是ajax传递的,在调试接口中找一下有没有接口
在这里插入图片描述
发现了这个,应该是我们要找的东西,找到request_url,是我们要拿到的接口链接,
在这里插入图片描述
简单分析了下主要是max_behot_time、as、cp、_signature这几个参数在变化,max_behot_time在返回的json文件最后能拿到,其他几个参数很明显是加密了,全局搜索参数,在index.88f72107a4b3405 -27de1.js里面找到了as、cp,打上断点调试,确认e就是as、cp的值,
在这里插入图片描述
这两个参数应该是md5加密的,把整个函数扣出来,用python调用。在这里插入图片描述
下面再找下_signature,发现p就是_signature函数隐藏的地方
在这里插入图片描述

找到p函数所在的js
在这里插入图片描述

打上断点,可以看到通过将其他参数拼接的a传给window.byted_acrawler.sign()方法进行加密,最后返回_signature参数的值。
在这里插入图片描述
这样就是最后完整的请求链接,在浏览器里测试一下,果然是有数据的,这里就不放图了,然后写个js接口去调用node执行
在这里插入图片描述
再用python去解析返回的json包,可以拿到资讯信息的title,url之类的,算是爬取成功了。但自己这边需求比较特殊,需要获取到正文详情页面的信息,本来以为直接拿HTML就行,但发现并不是这样。
在这里插入图片描述
详情页也是用JS渲染的,找了一会并没有定位到文件,最后发现response返回结果里有个content值,包含了正文,直接请求页面,最后通过正则拿到详情数据。
在这里插入图片描述
在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值