https://blog.csdn.net/qq_44695727/article/details/109090568
获取浏览器Network请求和响应
Selenium-获取请求的接口数据信息
Browsermob-Proxy是一个开源的Java编写的基于LittleProxy的代理服务。Browsermob-Proxy的具体流程有点类似与Flidder或Charles。即开启一个端口并作为一个标准代理存在,当HTTP客户端(浏览器等)设置了这个代理,则可以抓取所有的请求细节并获取返回内容。
需要java环境!
直接到项目的github上下载打好的压缩包即可:https://github.com/lightbody/browsermob-proxy/releases ,支持Linux和Windows。
window如下
pip install browsermob-proxy
-
完整代码:
-
import json from browsermobproxy import Server from selenium.webdriver.chrome.options import Options from selenium import webdriver if __name__ == '__main__': # 开启Proxy server = Server(r'D:\usr\data\browser\browsermob-proxy-2.1.4\bin\browsermob-proxy.bat') server.start() proxy = server.create_proxy() # 配置Proxy启动WebDriver chrome_options = Options() chrome_options.add_argument('--proxy-server={0}'.format(proxy.proxy)) # 解决 您的连接不是私密连接问题 chrome_options.add_argument('--ignore-certificate-errors') chrome_options.add_argument('--ignore-urlfetcher-cert-requests') driver = webdriver.Chrome(chrome_options=chrome_options) driver.implicitly_wait(20) proxy.new_har("douyin", options={'captureHeaders': True, 'captureContent': True}) driver.get(url) result = proxy.har for entry in result['log']['entries']: _url = entry['request']['url'] # 根据URL找到数据接口 if "/hotel/list" in _url: _response = entry['response'] _content = _response['content']['text'] # 获取接口返回内容 print(_content) # 读取信息 person_json = json.loads(_content) hotels = (person_json["data"])["hotels"] server.stop()