Created
September 19, 2016 06:54
-
-
Save Kxrr/541a0b9807c7f676efc46f1d3ed4b4f7 to your computer and use it in GitHub Desktop.
Proxy example for splinter(0.7.4) on python2.7
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: utf-8 -*- | |
""" | |
ProxyBrowser for splinter(0.7.4) on python2.7 | |
Working on Chrome and Phantomjs | |
""" | |
from functools import partial | |
from selenium import webdriver | |
from splinter import Browser | |
from splinter.exceptions import DriverNotFoundError | |
class ProxyBrowser(object): | |
def __new__(cls, driver='chrome', proxy=None, proxy_type='http', **kwargs): | |
""" | |
>>> browser = ProxyBrowser(driver='chrome', proxy='61.132.74.89:1080', proxy_type='socks5') | |
>>> browser.visit('http://wtfismyip.com') | |
""" | |
browser = partial(Browser, driver) | |
proxy_kwargs = cls.get_proxy_kwargs(driver, proxy, proxy_type) | |
kwargs.update(proxy_kwargs) | |
return browser(**kwargs) | |
@classmethod | |
def get_proxy_kwargs(cls, driver, proxy, proxy_type): | |
""" | |
:param driver: chrome | phantomjs | |
:param proxy: {address}:{port} | |
:param proxy_type: http | socks5 | |
""" | |
proxy_server = '{0}://{1}'.format(proxy_type, proxy) | |
print proxy_server | |
if proxy: | |
if driver == 'phantomjs': | |
return {'service_args': ['--proxy={}'.format(proxy), '--proxy-type={}'.format(proxy_type)]} | |
elif driver == 'chrome': | |
chrome_options = webdriver.ChromeOptions() | |
chrome_options.add_argument('--proxy-server={}'.format(proxy_server)) | |
return {'options': chrome_options} | |
else: | |
raise DriverNotFoundError('Not supported driver: {}'.format(driver)) | |
else: | |
return {} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment