Selenium tidak mengizinkan Anda menggunakan autentikasi nama pengguna dan kata sandi (kunci API) secara default. Anda dapat menggunakan solusi di bawah ini untuk melakukannya sebagai pengganti daftar putih IP.
import osimport zipfilefrom selenium import webdriverPROXY_HOST = 'premium.residential.proxyrack.net' # ini untuk proxy Premium Residential. Anda dapat mengganti DNS dari layanan yang Anda gunakanPROXY_PORT = 9000 # port (gunakan "10000" untuk port yang tetap)PROXY_USER = 'user' # nama pengguna AndaPROXY_PASS = 'password' # kata sandi Anda (kunci API)manifest_json = """{ "version": "1.0.0", "manifest_version": 2, "name": "Chrome Proxy", "permissions": [ "proxy", "tabs", "unlimitedStorage", "storage", "<all_urls>", "webRequest", "webRequestBlocking" ], "background": { "scripts": ["background.js"] }, "minimum_chrome_version":"22.0.0"}"""background_js = """var config = { mode: "fixed_servers", rules: { singleProxy: { scheme: "http", host: "%s", port: parseInt(%s) }, bypassList: ["localhost"] } };chrome.proxy.settings.set({value: config, scope: "regular"}, function() {});function callbackFn(details) { return { authCredentials: { username: "%s", password: "%s" } };}chrome.webRequest.onAuthRequired.addListener( callbackFn, {urls: ["<all_urls>"]}, ['blocking']);""" % (PROXY_HOST, PROXY_PORT, PROXY_USER, PROXY_PASS)def get_chromedriver(use_proxy=False, user_agent=None): path = os.path.dirname(os.path.abspath(__file__)) chrome_options = webdriver.ChromeOptions() if use_proxy: pluginfile = 'proxy_auth_plugin.zip' with zipfile.ZipFile(pluginfile, 'w') as zp: zp.writestr("manifest.json", manifest_json) zp.writestr("background.js", background_js) chrome_options.add_extension(pluginfile) if user_agent: chrome_options.add_argument('--user-agent=%s' % user_agent) driver = webdriver.Chrome( os.path.join(path, 'chromedriver'), chrome_options=chrome_options) return driverdef main(): driver = get_chromedriver(use_proxy=True) driver.get('http://api.ipify.org/?format=json') # url apa pun yang ingin Anda jelajahi