1.便捷写爬虫网站:
Convert curl commands to code
使用流程:又点击想要抓的包,复制URL(base)格式复制
在上面链接中粘贴即可
2.找到含有评论的包(即main?oid):观察表单发现两处参数在变化,即wts和w_rid,且它们是加密的
遇到这这种,都是在下方serach框搜索关键参数w_rid
进入第一个js文件
在w_rid处打上断点,并下滑页面使之暂停,观察代码,wts由Ft.toString()得来,而Ft = Math.round(Date.now() / 1e3
这段代码是用来获取当前时间的 Unix 时间戳,并将其转换为秒数。具体解释如下:
Date.now()
: 返回当前时间的毫秒数,是相对于 1970 年 1 月 1 日午夜(UTC 时间)的时间戳。/ 1e3
: 将毫秒数转换为秒数,即除以 1000。Math.round()
: 对除以 1000后的秒数进行四舍五入,确保结果为整数。
因此,整体来说,Ft
变量的值表示了当前时间的 Unix 时间戳(秒数)。
用python实现:
import time
# 获取当前时间的 Unix 时间戳(秒数)
Ft = round(time.time())
分析w_rid,它有MD5加密得来,Wt经过实验,在控制台打印,是一个固定值
Jt由en变字符串处理而得来,打印一下,发现其与wts还有关系
再看,发现其就是由url表单变过来的:
代码实现:
import time
import hashlib
import requests
# 获得当前wts的函数
def get_w_rid(wts):
MD5 = hashlib.md5()
Jt = f'mode=3&oid=1651458406&pagination_str=%7B%22offset%22%3A%22%7B%5C%22type%5C%22%3A1%2C%5C%22direction%5C%22%3A1%2C%5C%22session_id%5C%22%3A%5C%221750756505440224%5C%22%2C%5C%22data%5C%22%3A%7B%7D%7D%22%7D&plat=1&type=1&web_location=1315875&wts={wts}ea1db124af3c7062474693fa704f4ff8'
print(Jt)
MD5.update(Jt.encode('utf-8'))
return MD5.hexdigest()
wts = get_wts()
w_rid = get_w_rid(wts)
print(w_rid)
print(wts)
输入对应的wts,上述代码返回的w_rid与表单一致
但注意的是,这些都是第一页往后的规律,第一页,Jt是什么样的我没办法得到,得不出第一页的w_rid,在第一页后的表单是这样的,
pagination_str是不变的,而其中session_id在第一页的数据中可以获取。