from seleniumwire import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
# Access requests via the `requests` attributefor request in driver.requests:
if request.response:
print(
request.url, # 请求的url
request.response.status_code, # 状态码
request.headers # 请求的headers
request.response.headers, # 返回的headers
)
3 安装SSL(winodws不需要安装)
# For apt based Linux systems
sudo apt install openssl
# For RPM based Linux systems
sudo yum install openssl
# For Linux alpine
sudo apk add openssl
4 远程网络驱动程序
from selenium.webdriver.common.by import By
from seleniumwire import webdriver
options = {
'suppress_connection_errors': False,
'auto_config': False,
'addr': '0.0.0.0',
'port': 8087,
'proxy': {
'http': <forward proxy details like scheme://user:pass@ip:port>,
'https': <forward proxy details like scheme://user:pass@ip:port>,,
},
}
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--proxy-server=kubernetes-service-name:8087')
chrome_options.add_argument('--ignore-certificate-errors')
chrome_options.add_argument("--disable-dev-shm-usage");
chrome_options.add_argument("start-maximized");
chrome_options.add_argument("disable-infobars");
chrome_options.add_argument("--disable-extensions")
chrome_options.add_argument("--disable-gpu");
chrome_options.add_argument("--no-sandbox");
chrome_options.add_argument("--user-data-dir=/root/chrome/data")
# 指定chrome的路径
chrome_options.binary_location = "/opt/google/chrome/chrome"
s = Service("/usr/bin/chromedriver")
browser = webdriver.Remote('http://selenium-service-name:4444/wd/hub',service=s, desired_capabilities=chrome_options.to_capabilities(), seleniumwire_options=options)
print("Browser setup done.")
# Use try/finally so the browser quits even if there is an exceptiontry:
print("Getting yt.")
browser.get("https://www.youtube.com/")
print("Saving screenshot for yt")
browser.save_screenshot('yt.png')
print("Extracting Xpath.")
text = browser.find_element(By.XPATH,'/html/body/ytd-app/div/ytd-page-manager/ytd-browse/ytd-two-column-browse''-results-renderer/div[1]/ytd-rich-grid-renderer/div[''6]/ytd-rich-item-renderer[1]/div/ytd-rich-grid-media/div[1]/div/div[''1]/h3/a/yt-formatted-string').text
print(f'The title of the first video on youtube is : {text}')
except Exception as e:
print(e)
finally:
browser.quit()
print(browser.requests)
5 访问请求
driver.requests # 按时间顺序排列的捕获请求列表。
driver.last_request # 最后一个请求 用于检索最近捕获的请求的便利属性。这比使用driver.requests[-1]更有效。
driver.wait_for_request(pat, timeout=10) # 此方法将等待,直到它看到与模式匹配的请求 pat可以是简单的子字符串或正则表达式
driver.proxy = { # 设置代理'http': 'http://user:pass@192.168.10.100:8888',
'https': 'https://user:pass@192.168.10.100:8889',
}
driver.har # 已发生的 HTTP 事务的 JSON 格式的 HAR 存档
driver.iter_requests() # 返回捕获请求的迭代器。在处理大量请求时很有用defrequest_interceptor(request, response): # A response interceptor takes two argsdel request.headers['Referer'] # Remember to delete the header first
request.headers['Referer'] = 'some_referer'# Spoof the referer
driver.request_interceptor = request_interceptor # 用于设置请求拦截器。defresponse_interceptor(request, response): # A response interceptor takes two argsif request.url == 'https://server.com/some/path':
if request.url == 'https://server.com/some/path':
response.headers['New-Header'] = 'Some Value'
driver.response_interceptor = response_interceptor # 用于设置响应拦截器。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
2019-02-22 windows安装AnyProxy 配合夜神模拟器抓包