Уведомления

Группа в Telegram: @pythonsu

#1 Июль 18, 2012 09:19:40

deepShadow
Зарегистрирован: 2012-07-18
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

SocksiPy & Celenium Webdriver

Нужно заставить подружить Celenium WebDriver с SocksiPy

вот кусок кода -

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import os
import random
import socks
import socket
import urllib2
import re
     
    def re_socks(currentSOCKS):
            a = re.match('(.*):(\d*)\s(\d*)', currentSOCKS)
            socks_addr = a.group(1)
            socks_port = a.group(2)
            socks_login = ""
            socks_pswd = a.group(3)
            socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, socks_addr, int(socks_port), True, socks_login, socks_pswd)
            socket.socket = socks.socksocket
           
    def Selenium_start():
     
            driver = webdriver.Firefox()
            driver.close()
           
    currentSOCKS = "1.2.3.4:5555 66666666"
    #re_socks(currentSOCKS)
    Selenium_start()

убрать комент с re_socks(currentSOCKS) - и куча ошибок в интерпретаторе.
Гуглил на стаковерфлоу, там некоторые советуют через вебдрайвер создавать новый профиль в ФФ, ставить там соответствующие настройки соединения, указывать ИП и порт сокса, а при запуске, если на сокс-сервера стоит авторизация, ФФ типа должен выкинуть basic-авторизацию. Тестил, ничего не выкидывает, с соксом дружить никак не желает..


Спасибо за помощь!

Отредактировано deepShadow (Июль 18, 2012 09:20:25)

Офлайн

#2 Сен. 13, 2012 18:29:11

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

SocksiPy & Celenium Webdriver

Вы делаете очень странную вещь, пытаетесь навешать сокс на стандартную сетевую питонью библиотеку, которая используется лишь для того, чтобы связываться с браузером. Я не знаю точных детаелей как это работает. ЗНаю лишь, что в случае firefox, создаётся специальный пользовательский профиль с внедрённым плагином, который и осуществляет контроль браузера. Скорее всего этот плагин слушает команды на определённом порту, команды эти отправляются вашим скриптом через socket или urllib, когда вы навешиваете сокс, то команды просто уходят в сеть (в никуда), вместо того, чтобы попадать в плагин :)

Гляньте эту функцию https://bitbucket.org/lorien/grab/src/c1ae0620815b/grab/tools/selenium_tools.py#cl-58 , там видно, как настраивать прокси с помощью специально созданного для этой цели пользовательского профиля.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version