Python Selenium结合BrowserMob-Proxy示例:抓取请求数据
browsermob-proxy
BrowserMob Proxy是一个用户操作浏览器代理的工具,它可以用于记录和分析HTTP请求和响应。主要用途之一是用于自动化测试,例如本文所写。
browsermob-proxy的安装
1. 下载browsermob-proxy.bat
browsermob-proxy下载
2.安装python模块browsermob-proxy
pip install browsermob-proxy
具体使用
第一步:开启代理
第二步:
第三步:关闭BrowserMob Proxy和selenium
完整代码
from browsermobproxyimport Server
from seleniumimport webdriver
from selenium.webdriver.chrome.optionsimport Options
bmp_path =r"browsermob-proxy.bat的路径"
server = Server(bmp_path)
server.start()
proxy = server.create_proxy()
# 配置Selenium使用BrowserMob Proxy
chrome_options = Options()
chrome_options.add_argument("–proxy-server={0}".format(proxy.proxy))
chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])
chrome_options.add_argument("–ignore-certificate-errors")#解决:您的连接不是私密连接
# 初始化WebDriver
driver = webdriver.Chrome(executable_path=r'chromedriver.exe的路径', options=chrome_options)
# 设置一个新的Har来捕获请求
proxy.new_har("test", options={'captureHeaders':True, 'captureContent':True})
driver.get("****网站链接****")
#重要:此处操作为对目标页面的一些操作
#例如我这边需要使用selenium到对应要获取数据的网站上,然后打开一个可以获取到Authorization的页面
driver.find_element_by_id("username").send_keys("****")
driver.find_element_by_id("password").send_keys("*****")
driver.find_element_by_id("submit_psd").click()
driver.get("*****/productManage")
# 获取HAR数据
har = proxy.har
# 遍历HAR中的请求并查找Auth字段
for entryin har['log']['entries']:
request = entry['request']
url = request['url']
if "pageList" in url:
headers = request['headers']
for hin headers:
if h.get("name")=="Authorization":
auth = h["value"]#这个是Authorization
print(auth)
# 关闭BrowserMob Proxy和Selenium
server.stop()
driver.quit()
作者:Alice0424Xiaoq