Страницы

Поиск по вопросам

Показаны сообщения с ярлыком socks5. Показать все сообщения
Показаны сообщения с ярлыком socks5. Показать все сообщения

пятница, 14 февраля 2020 г.

Как настроить Socks5 proxy на Selenium для chrome в python?

#python #python_3x #selenium #selenium_webdriver #socks5


никак не получается настроить socks5 прокси (и http кстати тоже) на Selenium. Перепробовал
кучу способ. И через опции

self.options.add_argument('--proxy-server=http://'+proxy)


и через 

webdriver.DesiredCapabilities.CHROME['proxy'] = {
        "socksProxy": proxy,
        "ftpProxy": proxy,
        "sslProxy": proxy,
        "noProxy": None,
        "proxyType": "MANUAL",
        "class": "org.openqa.selenium.Proxy",
        "autodetect": False
    }


И тд. Видимо где то я делаю ошибку, пожалуйста опишите полностью рабочий пример настройки
socks5 прокси на Selenium для Python и Chrome webdriver, с привидением форматов строки
прокси(ибо может я тут туплю...). Пишу от безысходности уже...Заранее большое спасибо!

PS два типа проблем возникали при попытках установить прокси разными способами: 


Просто оставался старый айпишник, не ставился прокси.
Пропадал доступ в интернет через webdriver. 
Просто почему то очень много способов в интернете находил, но результата пока что
не добился


Update:
Попробовал способом предложенным ниже. IP не удается изменить

proxy = 'name:pass@ip:port'
service_args = ['--proxy='+proxy, '--proxy-type=socks5']
driver = webdriver.Chrome(executable_path=path_to_chrome_webdriver, 
                          service_args=service_args)
driver.get('https://2ip.ru/')


Update:
Получилось использовать прокси socks5 без аутентификации с помощью следующего кода:

 options = webdriver.ChromeOptions()
 options.add_argument('--proxy-server=socks5://' + proxy)
 driver = webdriver.Chrome(options=self.options)


При добавлении

 options.add_argument('--proxy-auth=' + proxy_auth)


Пропадает подключение
    


Ответы

Ответ 1



Попробуйте через service_args: service_args = ['--proxy=127.0.0.1:9050', '--proxy-type=socks5', '--proxy-auth=admin:admin'] driver = webdriver.Chrome(executable_path=path_to_chrome_webdriver, service_args=service_args) Update: proxies = [ { 'addr': '123.123.123.123:1234', 'auth': 'admin:admin' }, { 'addr': '200.2.2.2:7868', 'auth': 'foo:bar' }, ] for proxy in proxies: service_args = ['--proxy=' + proxy['addr'], '--proxy-type=socks5', '--proxy-auth=' + proxy['auth']] driver = webdriver.Chrome(executable_path=path_to_chrome_webdriver, service_args=service_args) driver.get('https://2ip.ru/') driver.close()

Ответ 2



Хром не поддерживает прокси с аутентификацией по логину и паролю Я в этом не уверен, но очень много информации изучив я пришел к этому. Единственное решение, которое для меня подходит - это использовать прокси без аутентификации по логину и паролю (можно использовать аутентификацию по IP) options = webdriver.ChromeOptions() proxy = '12.12.421.125:1949' options.add_argument('--proxy-server=socks5://' + proxy) driver = webdriver.Chrome(options=self.options)

вторник, 10 декабря 2019 г.

не работает socks5 proxy в связке Python3 Selenium3 Phantomjs2

#python #proxy #selenium #phantomjs #socks5


Вот код который пытаюсь выполнить:

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import time

ua = dict(DesiredCapabilities.PHANTOMJS)
ua["phantomjs.page.settings.userAgent"] = ("Mozilla/5.0 (Windows NT 10.0; Win64;
x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.59 Safari/537.36")
service_args = ['--proxy=109.228.147.75:45554','--proxy-type=socks5','--load-images=false','--ignore-ssl-errors=true']
browser = webdriver.PhantomJS(desired_capabilities=ua, service_args=service_args)
browser.set_window_size(1920, 1080)
browser.get('http://www.ip-adress.com/')
time.sleep(10)
browser.save_screenshot('screen_test.png')


Если использовать socks5, то при выполнении кода PhantomJS не может загрузить сайт,
оставаясь в подвешенном состоянии, можно ждать вечность и ничего не произойдёт. Если
завершить процесс PhantomJS то IDLE прервётся на команде:

browser.get('http://www.ip-adress.com/')


В Мозиле (не в коде, а просто в окне) с этим же proxy сайт открывается.

Если заменить прокси на https тип, то всё заработает.

Однако, через socks5 загружается http://example.com/. То есть только он. Ни один
другой сайт не грузится. => Из-за этого подозреваю что проблема с DNS запросами, но
как это фиксить?

Python 3.5 / Selenium 3.0.1 / PhantomJS 2.1.1
    


Ответы

Ответ 1



Всё дело в самом proxy. Я так до конца и не понял в чём всё же фишка, но как итог, нужно проверять proxy на работающий DNS Forwarding. Просто работающих соксов много, а вот с адекватным DNS F мне как-то попалось значительно меньше. Как я понял, PhantomJS при использовании socks5 по умолчанию использует DNS Forwarding, по этому и ждёт, когда-же сервер ему ответит. Однако настройки как в Мозиле: у Фантома нет, и отключить проксирование DNS запросов у Фантома нельзя. Хотя я не исключаю, что не прав до сих пор, и реально ответ в другом. Спасибо))

вторник, 16 октября 2018 г.

не работает socks5 proxy в связке Python3 Selenium3 Phantomjs2

Вот код который пытаюсь выполнить:
from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities import time
ua = dict(DesiredCapabilities.PHANTOMJS) ua["phantomjs.page.settings.userAgent"] = ("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.59 Safari/537.36") service_args = ['--proxy=109.228.147.75:45554','--proxy-type=socks5','--load-images=false','--ignore-ssl-errors=true'] browser = webdriver.PhantomJS(desired_capabilities=ua, service_args=service_args) browser.set_window_size(1920, 1080) browser.get('http://www.ip-adress.com/') time.sleep(10) browser.save_screenshot('screen_test.png')
Если использовать socks5, то при выполнении кода PhantomJS не может загрузить сайт, оставаясь в подвешенном состоянии, можно ждать вечность и ничего не произойдёт. Если завершить процесс PhantomJS то IDLE прервётся на команде:
browser.get('http://www.ip-adress.com/')
В Мозиле (не в коде, а просто в окне) с этим же proxy сайт открывается.
Если заменить прокси на https тип, то всё заработает.
Однако, через socks5 загружается http://example.com/. То есть только он. Ни один другой сайт не грузится. => Из-за этого подозреваю что проблема с DNS запросами, но как это фиксить?
Python 3.5 / Selenium 3.0.1 / PhantomJS 2.1.1


Ответ

Всё дело в самом proxy. Я так до конца и не понял в чём всё же фишка, но как итог, нужно проверять proxy на работающий DNS Forwarding. Просто работающих соксов много, а вот с адекватным DNS F мне как-то попалось значительно меньше.
Как я понял, PhantomJS при использовании socks5 по умолчанию использует DNS Forwarding, по этому и ждёт, когда-же сервер ему ответит. Однако настройки как в Мозиле:

у Фантома нет, и отключить проксирование DNS запросов у Фантома нельзя.
Хотя я не исключаю, что не прав до сих пор, и реально ответ в другом.
Спасибо))