- Как установить прокси-аутентификацию (пользователь и пароль) с помощью Python + Selenium
- 6 ответов
- Запуск Selenium Webdriver с прокси в Python
- Как установить прокси-аутентификацию (пользователя и пароль) с помощью python selenium
- 6 ответов
- Как задать браузеру Firefox прокси с авторизацией в Selenium?
- Решение
Как установить прокси-аутентификацию (пользователь и пароль) с помощью Python + Selenium
Я использую Firefox WebDriver в Python 2.7 с Selenium. Моя программа python запускает браузер Firefox и посещает разные веб-сайты, когда я запускаю программу. Но мне нужно установить прокси с аутентификацией, чтобы при посещении программой любого веб-сайта она посещала прокси-сервер.
Есть несколько подобных вопросов на SO. Но для Selenium Firefox WebDriver of Python нет конкретного решения.
Firefox сохраняет свою конфигурацию прокси в профиле. Вы можете установить прокси в профиле и использовать этот профиль Firefox. поэтому я думаю, что вам нужно изменить существующий профиль Firefox. Вы найдете много ресурсов, как изменить профиль FF для прокси.
Не могли бы вы дать мне ссылку на то, как я могу изменить профиль firefox из программы python, сохранить его и использовать повторно .
Насколько я знаю, селен не может сделать это сам по себе. нужно искать больше для последнего результата. но я думаю, что вы можете справиться с этим через python
6 ответов
Установите селеновую проволоку
Импортировать
from seleniumwire import webdriver
Авторизация через прокси
options = < 'proxy': < 'http': 'http://username:password@host:port', 'https': 'https://username:password@host:port', 'no_proxy': 'localhost,127.0.0.1,dev_server:8080' >> driver = webdriver.Firefox(seleniumwire_options=options)
Предупреждение
Загляните в папку кэша selenium-wire. У меня была проблема, потому что она занимала все мое дисковое пространство. Вы должны иногда удалять его в своем скрипте, когда хотите.
В дополнение к запуску Firefox с профилем, в котором сохранены учетные данные. Вы можете сделать это, загрузив расширение, которое пишет в loginTextbox и password1Textbox из chrome://global/content/commonDialog.xul (окно предупреждения).
Уже есть некоторые расширения, которые сделают эту работу. Например: Close Proxy Authentication
from selenium import webdriver from base64 import b64encode proxy = fp = webdriver.FirefoxProfile() fp.add_extension('closeproxy.xpi') fp.set_preference('network.proxy.type', 1) fp.set_preference('network.proxy.http', proxy['host']) fp.set_preference('network.proxy.http_port', int(proxy['port'])) # . ssl, socks, ftp . fp.set_preference('network.proxy.no_proxies_on', 'localhost, 127.0.0.1') credentials = ':'.format(**proxy) credentials = b64encode(credentials.encode('ascii')).decode('utf-8') fp.set_preference('extensions.closeproxyauth.authtoken', credentials) driver = webdriver.Firefox(fp)
Запуск Selenium Webdriver с прокси в Python
Я пытаюсь запустить Selenium Webdriver script в Python для выполнения некоторых основных задач. Я могу заставить робота функционировать отлично, когда его запускают через Selenium IDE inteface (т.е. Когда вы просто получаете GUI, чтобы повторять мои действия). Однако, когда я экспортирую код как Python script и пытаюсь выполнить его из командной строки, браузер Firefox откроется, но никогда не сможет получить доступ к стартовому URL (ошибка возвращается в командную строку и программа останавливается). Это происходит во мне, независимо от того, на каком веб-сайте и т.д. Я пытаюсь получить доступ. Я включил здесь очень простой код для демонстрационных целей. Я не думаю, что я правильно включил прокси-раздел кода, поскольку возвращаемая ошибка кажется сгенерированной прокси-сервером. Любая помощь была бы чрезвычайно оценена. Этот код просто предназначен для открытия www.google.ie и поиска слова «селен». Для меня он открывает пустой браузер Firefox и останавливается.
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import Select from selenium.common.exceptions import NoSuchElementException import unittest, time, re from selenium.webdriver.common.proxy import * class Testrobot2(unittest.TestCase): def setUp(self): myProxy = "http://149.215.113.110:70" proxy = Proxy(< 'proxyType': ProxyType.MANUAL, 'httpProxy': myProxy, 'ftpProxy': myProxy, 'sslProxy': myProxy, 'noProxy':''>) self.driver = webdriver.Firefox(proxy=proxy) self.driver.implicitly_wait(30) self.base_url = "https://www.google.ie/" self.verificationErrors = [] self.accept_next_alert = True def test_robot2(self): driver = self.driver driver.get(self.base_url + "/#gs_rn=17&gs_ri=psy-ab&suggest=p&cp=6&gs_id=ix&xhr=t&q=selenium&es_nrs=true&pf=p&output=search&sclient=psy-ab&oq=seleni&gs_l=&pbx=1&bav=on.2,or.r_qf.&bvm=bv.47883778,d.ZGU&fp=7c0d9024de9ac6ab&biw=592&bih=665") driver.find_element_by_id("gbqfq").clear() driver.find_element_by_id("gbqfq").send_keys("selenium") def is_element_present(self, how, what): try: self.driver.find_element(by=how, value=what) except NoSuchElementException, e: return False return True def is_alert_present(self): try: self.driver.switch_to_alert() except NoAlertPresentException, e: return False return True def close_alert_and_get_its_text(self): try: alert = self.driver.switch_to_alert() alert_text = alert.text if self.accept_next_alert: alert.accept() else: alert.dismiss() return alert_text finally: self.accept_next_alert = True def tearDown(self): self.driver.quit() self.assertEqual([], self.verificationErrors) if __name__ == "__main__": unittest.main()
Как установить прокси-аутентификацию (пользователя и пароль) с помощью python selenium
Я использую веб-драйвер Firefox в Python 2.7 с Selenium. Моя программа на Python запускает браузер Firefox и посещает различные веб-сайты, когда я запускаю программу. Но мне нужно настроить прокси-сервер с аутентификацией, чтобы при посещении программой любого веб-сайта она проходила через прокси-сервер.
Есть несколько похожих очередей на SO. Но не существует конкретного решения для веб-драйвера Selenium Firefox Python.
6 ответов
Установить селен-провод
Импортируйте это
from seleniumwire import webdriver
Авторизация на прокси
options = < 'proxy': < 'http': 'http://username:[email protected]:port', 'https': 'https://username:[email protected]:port', 'no_proxy': 'localhost,127.0.0.1,dev_server:8080' > > driver = webdriver.Firefox(seleniumwire_options=options)
Предупреждение.
Взгляните в папку кэша selenium-wire. У меня была проблема, потому что она занимала все мое дисковое пространство. Вы должны иногда удалять его в своем скрипте, когда хотите.
В дополнение к запуску Firefox с профилем, в котором сохранены учетные данные. Вы можете сделать это, загрузив расширение, которое пишет в loginTextbox а также password1Textbox из chrome://global/content/commonDialog.xul (альтернативное окно).
Уже есть некоторые расширения, которые сделают эту работу. Например: Close Proxy Authentication
from selenium import webdriver from base64 import b64encode proxy = fp = webdriver.FirefoxProfile() fp.add_extension('closeproxy.xpi') fp.set_preference('network.proxy.type', 1) fp.set_preference('network.proxy.http', proxy['host']) fp.set_preference('network.proxy.http_port', int(proxy['port'])) # . ssl, socks, ftp . fp.set_preference('network.proxy.no_proxies_on', 'localhost, 127.0.0.1') credentials = ':'.format(**proxy) credentials = b64encode(credentials.encode('ascii')).decode('utf-8') fp.set_preference('extensions.closeproxyauth.authtoken', credentials) driver = webdriver.Firefox(fp)
Вы можете написать собственное расширение firefox для прокси и запускать из селена. Вам нужно написать 2 файла и запаковать их.
var proxy_host = "YOUR_PROXY_HOST"; var proxy_port = YOUR_PROXY_PORT; var config = < mode: "fixed_servers", rules: < singleProxy: < scheme: "http", host: proxy_host, port: proxy_port >, bypassList: [] > >; function proxyRequest(request_data) < return < type: "http", host: proxy_host, port: proxy_port >; > browser.proxy.settings.set(, function() ); function callbackFn(details) < return < authCredentials: < username: "YOUR_USERNAME", password: "YOUR_PASSWORD" >>; > browser.webRequest.onAuthRequired.addListener( callbackFn, "]>, ['blocking'] ); browser.proxy.onRequest.addListener(proxyRequest, "]>);
manifest.json
Затем вам нужно запаковать эти файлы в zip-архив в режиме DEFLATED с расширением .xpi в конце, например my_proxy_extension.xpi.
- Запустить без подписи. Для этого шага:
- Откройте флаги firefox в about:config и установите для параметров xpinstall.signatures.required значение false .ИЛИ ЖЕ
- Обновите профиль Firefox в: Windows : C:\Program Files\Mozilla Firefox\defaults\pref\channel-prefs.js Linux : /etc/firefox/syspref.js
Добавьте следующую строку в конец файла:
pref("xpinstall.signatures.required",false);
После этих шагов запустите селен и установите это расширение:
from selenium import webdriver driver = webdriver.Firefox() driver.install_addon("path/to/my_proxy_extension.xpi") driver.get("https://yoursite.com")
Существует пример для Firefox + Python, но без аутентификации здесь. Затем вы можете найти другие доступные параметры здесь в исходном коде. Похоже, вам нужно следующее:
socksUsername socksPassword
from selenium import webdriver from selenium.webdriver.common.proxy import * myProxy = "host:8080" proxy = Proxy(< 'proxyType': ProxyType.MANUAL, 'httpProxy': myProxy, # set this value as desired 'ftpProxy': myProxy, # set this value as desired 'sslProxy': myProxy, # set this value as desired 'noProxy': '' # set this value as desired 'socksUsername': = '' 'socksPassword': = '' >) driver = webdriver.Firefox(proxy=proxy)
driverPref = webdriver.FirefoxProfile() driverPref.set_preference("network.proxy.type", 1) . . . driverPref.set_preference('network.proxy.socks', proxyHost) driverPref.set_preference('network.proxy.socks_port', proxyPort) driverPref.update_preferences() driver = webdriver.Firefox(firefox_profile=driverPref)
РЕДАКТИРОВАТЬ:
Я посмотрел на это еще раз, и кажется, что невозможно установить детали проверки подлинности в FF, даже вручную. Единственный способ — просто запомнить уже введенные вами данные, которые выполняются двумя параметрами:
signon.autologin.proxy=true network.websocket.enabled=false
который может быть настроен с set_preference() метод. Вы также можете вручную просмотреть все параметры FF, перейдя к about:config ,
Как задать браузеру Firefox прокси с авторизацией в Selenium?
Приветствую форум, собственно, вопрос в заголовке В интернете уже долго ищу, но нет примеров именно для прокси с авторизацией.
Браузер Firefox в Selenium, как задать прокси с авторизацией
Всем привет, подскажите, как задать браузеру Firefox в Selenium прокси с авторизацией?Как задать путь к браузеру в selenium webdriver
У меня такой вопрос. Я пишу программу на java, где использую selenium webdriver который запускает.Selenium PhantomJS. Прокси с авторизацией
Всем привет, столкнулся с проблемой по установке прокси для фантомжс (прокси именно с.Есть прокси ipv6 с авторизацией. Как настроить раздачу этого прокси через роутер или другие варианты решения
Есть прокси ipv6 с авторизацией. Надо настроить раздачу этого прокси через роутер. Тонкостей задачи.Как добавить прокси к браузеру IE программно?
Как добавить прокси к браузеру ие программно.А нельзя ли поподробнее? Selenium — это же ты программно конторолы просто жмешь на некоей страничке. Кнопку какую нажать или еще что. Если ты в настройках браузера пропишешь прокси, то запрос полетит через прокси. В общем, я не понял вопрос.
Сообщение было отмечено weblord как решение
Решение
Сообщение от Kifsif
Не понял вопрос — не отвечай.
1 2 3 4 5 6 7 8 9 10 11 12 13 14
from selenium import webdriver from selenium.webdriver.common.proxy import * myProxy = "host:8080" proxy = Proxy({ 'proxyType': ProxyType.MANUAL, 'httpProxy': myProxy, 'ftpProxy': myProxy, 'sslProxy': myProxy, 'noProxy': '' # set this value as desired }) driver = webdriver.Firefox(proxy=proxy)