Skip to content

Instantly share code, notes, and snippets.

@Kxrr
Created September 19, 2016 06:54
Show Gist options
  • Save Kxrr/541a0b9807c7f676efc46f1d3ed4b4f7 to your computer and use it in GitHub Desktop.
Save Kxrr/541a0b9807c7f676efc46f1d3ed4b4f7 to your computer and use it in GitHub Desktop.
Proxy example for splinter(0.7.4) on python2.7
# -*- 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