driver +Chrome+proxy


from selenium import webdriver
import time
from selenium.webdriver.common.by import By

from selenium.webdriver.chrome.options import Options
from browsermobproxy import Server

class chrome_drive():
    def __init__(self,url):
        self.url=url

    def driver(self):
        driver = webdriver.Chrome()
        driver.maximize_window()
        driver.implicitly_wait(10)

        driver.get(self.url)
        return driver

    def proxy_driver(self):
        """windows系统定位到.bat文件,os系统定位到下述文件"""
        server = Server(r"/Users/lyx/browsermob-proxy-2.1.4/bin/browsermob-proxy")
        server.start()
        proxy = server.create_proxy()

        chrome_options = Options()
        chrome_options.add_argument('--proxy-server={0}'.format(proxy.proxy))
        chrome_options.add_argument('--headless')  # 无头模式,不开启游览器界面
        chrome_options.add_argument('--ignore-certificate-errors')  # 解决"您的连接不是私密连接"问题
        chrome_options.add_argument('blink-settings=imagesEnabled=false')  # 不加载图片,提升运行速度
        driver = webdriver.Chrome(chrome_options=chrome_options)
        driver.implicitly_wait(10)

        proxy.new_har(options={'captureHeaders': True, 'captureContent': True})
        driver.get(self.url)
        return (driver,proxy)





if __name__ == '__main__':
    account_loc = (By.XPATH, "//*[@class='login_box']/div/div/input")
    passwor_loc = (By.XPATH, "//*[@class='login_box']/div[2]/div/input")
    login_loc = (By.XPATH, '//*[@id="app"]/div/div[1]/div[2]/div/button')
    url="http://192.168.0.1"

    br=chrome_drive(url).proxy_driver()
    driver=br[0]
    proxy=br[1]

    driver.find_element(*account_loc).clear()
    driver.find_element(*account_loc).send_keys('15884572902')

    driver.find_element(*passwor_loc).clear()
    driver.find_element(*passwor_loc).send_keys('admin')
    driver.find_element(*login_loc).click()

    time.sleep(2)

    result = proxy.har
    api_info = []
    for i in result['log']['entries']:
        if 'request' in i:
            url = i['request']['url']
            method = i['request']['method']
            if '192.168.0.1' in url:
                if method != 'OPTIONS':
                    api_info.append(i)
            else:
                pass
    print(api_info)

    driver.quit()

如果在使用 `chrome_options.add_argument('--proxy-server=http://' + proxy)` 后代理无效,可能是由于以下原因: 1. 代理地址或端口错误:请确保您提供的代理地址和端口是正确的,并且没有拼写错误。您可以尝试手动在浏览器中设置代理来验证代理配置是否正确。 2. 代理协议不匹配:请确保您的代理协议与要访问的网站协议相匹配。例如,如果目标网站使用 HTTPS 协议,则需要使用 `--proxy-server=https://`。 3. Chrome 版本不兼容:某些 Chrome 版本可能对代理设置的参数格式有所改变。您可以尝试更新 Chrome 浏览器到最新版本,或者查看相关文档以了解该版本下的正确代理设置方式。 4. ChromeOptions 参数未生效:在某些情况下,`add_argument()` 方法可能无法正确添加参数。您可以尝试使用 `add_experimental_option()` 方法来设置代理,示例如下: ```python chrome_options = webdriver.ChromeOptions() chrome_options.add_experimental_option("proxy", { "httpProxy": proxy, "sslProxy": proxy, "noProxy": None, }) driver = webdriver.Chrome(chrome_options=chrome_options) ``` 这种方式使用了实验性选项来设置代理,可以尝试解决参数未生效的问题。 如果问题仍然存在,请检查您的代码是否存在其他问题,并确保您的代理服务器正常工作。如果问题仍然无法解决,建议您参考 ChromeOptions 的官方文档或联系技术支持以获取更详细的帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值