如何通过python中的代理selenium访问国家/地区受限制的网站

时间:2018-05-13 21:47:37

标签: python python-3.x selenium proxy

我正试图通过selenium访问一个网站,该网站在我居住的国家被阻止。我在python中使用selenium并使用代理来执行此操作。但是,我注意到,一旦我检查打开的selenium浏览器的IP,它就会显示我的真实IP而不是代理。 这有点令人困惑,因为我通过以下驱动程序设置设法访问此站点,但它已经不再工作了。

        fp = webdriver.FirefoxProfile()
        PROXY_PORT = config['DEFAULT']['PROXY_PORT']
        PROXY_HOST = config['DEFAULT']['PROXY_HOST']
        fp.set_preference('network.proxy.type', 0)
        fp.set_preference('network.proxy.http', PROXY_HOST)
        fp.set_preference('network.proxy.http_port', int(PROXY_PORT))
        fp.set_preference('network.proxy.https', PROXY_HOST)
        fp.set_preference('network.proxy.https_port', int(PROXY_PORT))
        fp.set_preference('network.proxy.ssl', PROXY_HOST)
        fp.set_preference('network.proxy.ssl_port', int(PROXY_PORT))
        fp.set_preference('network.proxy.ftp', PROXY_HOST)
        fp.set_preference('network.proxy.ftp_port', int(PROXY_PORT))
        fp.set_preference('network.proxy.socks', PROXY_HOST)
        fp.set_preference('network.proxy.socks_port', int(PROXY_PORT))
        fp.set_preference("general.useragent.override", "whater_useragent")
        fp.set_preference("general.useragent.override", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A")
        fp.update_preferences()
        driver = webdriver.Firefox(firefox_profile=fp)

现在,我正在尝试使用此方法分配代理但不做任何更改。

    PROXY_PORT = config['DEFAULT']['PROXY_PORT']
    PROXY_HOST = config['DEFAULT']['PROXY_HOST']
    myProxy = PROXY_HOST + ':' + PROXY_PORT
    proxy = webdriver.common.proxy.Proxy({'proxyType':webdriver.common.proxy.ProxyType.MANUAL,
     'httpProxy':myProxy,
     'ftpProxy':myProxy,
     'sslProxy':myProxy})
    driver = webdriver.Firefox(proxy=proxy)

我需要的是打开的firefox浏览器中的IP是代理的IP。如何才能做到这一点?我不知道为什么它起初工作现在它没有。请解释一下。

1 个答案:

答案 0 :(得分:1)

使用Chrome非常简单:

use constant has_dumper => eval { require Data::Dumper };

BEGIN {
   if (has_dump) {
      *dumper = sub { warn(Data::Dumper::Dumper(@_)) };
   } else {
      *dumper = sub { };
   }
}

dumper(...);                # Ok
dumper(...) if has_dumper;  # Statement completely optimized away if DD missing.

您也可以尝试使用插件/扩展名来执行此操作。我都成功了:)

如果您需要代理服务器: https://github.com/ochen1/pyproxy