selenium-python。如何捕获网络流量的响应

selenium-python。如何捕获网络流量的响应,第1张

selenium-python。如何捕获网络流量的响应

您可以访问浏览器或chromedriver日志,它们在网络响应方面略有不同。称为浏览器日志,称为

performance
驱动程序日志
driver
。它们返回一个类似json的对象,您可以解析该对象以使用其中的Network方法提取事件:

{'level': 'INFO',  'message': '{"message":{"method":"Page.frameStoppedLoading","params":{"frameId":"FB10764A3ABF7FFC83110C39C5F7BF77"}},"webview":"C2D13BD13CF743B6D0695B35E9CC935C"}',  'timestamp': 1538607113832}, {'level': 'INFO',  'message': '{"message":{"method":"Page.frameDetached","params":{"frameId":"FB10764A3ABF7FFC83110C39C5F7BF77"}},"webview":"C2D13BD13CF743B6D0695B35E9CC935C"}',  'timestamp': 1538607113838}, {'level': 'INFO',  'message': '{"message":{"method":"Network.requestWillBeSent","params":{"documentURL":"https://stackoverflow.com/questions/52633697/selenium-python-how-to-capture-network-traffics-response","frameId":"C2D13BD13CF743B6D0695B35E9CC935C","hasUserGesture":false,"initiator":{"type":"other"},"loaderId":"5331BFDC4F466FCED920CFC9F033D2EC","request":{"headers":{"Upgrade-Insecure-Requests":"1","User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"},"initialPriority":"VeryHigh","method":"GET","mixedContentType":"none","referrerPolicy":"no-referrer-when-downgrade","url":"https://stackoverflow.com/questions/52633697/selenium-python-how-to-capture-network-traffics-response"},"requestId":"5331BFDC4F466FCED920CFC9F033D2EC","timestamp":104499.729,"type":"document","wallTime":1538607113.838206}},"webview":"C2D13BD13CF743B6D0695B35E9CC935C"}',  'timestamp': 1538607113839},...}

您需要启用登录

DesiredCapabilities
,然后使用
JSON
模块进行解析:

import jsonfrom selenium import webdriverfrom selenium.webdriver.common.desired_capabilities import DesiredCapabilitiescaps = DesiredCapabilities.CHROMEcaps['loggingPrefs'] = {'performance': 'ALL'}driver = webdriver.Chrome(desired_capabilities=caps)driver.get('https://stackoverflow.com/questions/52633697/selenium-python-how-to-capture-network-traffics-response')def process_browser_log_entry(entry):    response = json.loads(entry['message'])['message']    return responsebrowser_log = driver.get_log('performance') events = [process_browser_log_entry(entry) for entry in browser_log]events = [event for event in events if 'Network.response' in event['method']]

我不知道是否可以使用此方法访问响应数据本身,但是可以获取响应的URL。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5641958.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存