声明
本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
1. 开启LPE服务
from LessPageEngineer.LessPageEngineeringCreator import LessPageEngineeringCreator less = LessPageEngineeringCreator({ 'TABS_NUM':1, # 标签页数量 'SERVER_DEFAULT_PORT':27889, # 标签页数量 'MAX_CHROME_TABS_NUM':5, # 最大标签页数量 'MAX_TAB_LIVE_TIME':300000, # 标签页最大存活时间 'MAX_CHROME_LIVE_TIME':300000, # 浏览器最大存活时间 'MAX_AFTER_REQUEST_SESSION_TIME':150, # 标签会话保存时间 'EXTENSION_PATHS':[], # 插件路径 'UPSTREAM':None, # 上游代理 'FETCH_LOG':3, }) less.run()2. 发送请求,建立缓存文件并且获取key
# 脱敏处理 url = b64decode('aHR0cHM6Ly93d3cuanVuZXlhb2Fpci5jb20vZmxpZ2h0UXVlcnk/ZGVwQ2l0eT0lRTQlQjglOEElRTYlQjUlQjctU0hBJmRlcEFpcnBvcnQ9JmFyckNpdHk9JUU1JThDJTk3JUU0JUJBJUFDLUJKUyZhcnJBaXJwb3J0PSZkZXBEYXRlPTIwMjUtMTItMTcmYXJyRGF0ZT0yMDI1LTEyLTE4JnBhc3NUeXBlPSZyb3V0ZVR5cGU9T1c='.encode()).decode() api_url = 'http://127.0.0.1:27889/uploadUrl' def save_key(): key = None for _ in range(3): try: # 这里可能会失败一次,重试即可 api_response = requests.post(api_url, json={ 'timeout': 60, 'wait_urls': [ {'url': '**/queryFlightSimple', } # 等待以queryFlightSimple结尾的url ], # 禁止其他的网络请求和img和字体文件请求 优化速度 'disable_img_font': True, 'key_save': True, # 不返回html 优化速度 'html': False, 'url': url, # 清除cookies 防止cookies污染 'clear_cookies': True }, verify=False) key = api_response.json() assert key['status'] == 'success' key = key['key'] break except Exception as e: print(f"保存Key失败:{e}") return key3. 访问http://127.0.0.1:{sever_port}/cache,修改缓存文件,将对应的函数方法暴露出来
3.1 先查看查询机票接口堆栈信息,找到方便传入参数以及合适断点的位置
通过分别查看这里的堆栈对应的js,可以看到有一处是比较理想的位置,这里只需要我们去修改n参数其中的值即可
先通过开发者工具本地替换下先测试下是否可行
暴露到全局后,修改下参数,调用下
通过开发者工具的抓包,可以看到有数据正确返回了,并且日期也是我们参数中修改的值
3.2 打开http://127.0.0.1:{port}/cache,找到对应的js链接,将刚刚在开发者工具中替换的文件拿去修改即可。记得保存
4. 构造请求,拦截请求参数,本地再次请求验证是否正确
可以看到是成功的