Selenium erlaubt es standardmäßig nicht, die Authentifizierung mit Benutzername und Passwort (API-Schlüssel) zu verwenden. Sie können den unten stehenden Workaround nutzen, um dies anstelle von IP-Whitelisting zu tun.
import osimport zipfilefrom selenium import webdriverPROXY_HOST = 'premium.residential.proxyrack.net' # dies ist für Premium Residential Proxies. Sie können den DNS des Dienstes, den Sie verwenden, ersetzenPROXY_PORT = 9000 # Port (verwenden Sie "10000" für einen Sticky-Port)PROXY_USER = 'user' # Ihr BenutzernamePROXY_PASS = 'password' # Ihr Passwort (API-Schlüssel)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') # jede URL, die Sie crawlen möchten