Python - Изменение IP-адреса во время селен работает?

Это может быть странно, мои извинения. Как изменить IP во время работы селена?

Вот что я попробовал:

Я сделал скрипт, который использует селен и меняет его IP, используя stem и прокси socks5. Кстати, я использую веб-драйвер Firefox.

Вот сценарий, который просто изменяет IP и печатает его, используя stem и socks5:

import time, sys, socks, socket
from stem import Signal
from stem.control import Controller
from stem.connection import connect
from urllib2 import urlopen

with Controller.from_port(port = 9051) as controller:
   controller.authenticate()
   socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050)
   socket.socket = socks.socksocket   

while True:
   ip = urlopen("http://ip.42.pl/raw").read()
   print(ip)
   controller.signal(Signal.NEWNYM)
   time.sleep(controller.get_newnym_wait()) 

Ну, скрипт работает ОТЛИЧНО. Но проблема возникает, когда мне также нужен селен.

from selenium import webdriver
import sys, socks, socket, time
from stem import Signal
from stem.control import Controller
from stem.connection import connect
from urllib2 import urlopen

with Controller.from_port(port = 9051) as controller:
   controller.authenticate()
   socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9050)
   socket.socket = socks.socksocket   
   driver = webdriver.Firefox()        # These are the cause of the errors

   while True:
       driver.get("www.google.com")  # These are the cause of the errors
       ip = urlopen("http://ip.42.pl/raw").read()
       print(ip)
       controller.signal(Signal.NEWNYM)
       time.sleep(controller.get_newnym_wait()) 

Если я запускаю скрипт с селеном, я получаю общее сообщение об ошибке сервера socks.

Traceback (most recent call last):
  File "2", line 12, in <module>
    driver = webdriver.Firefox()        # These are the cause of the errors
  File "/usr/local/lib/python2.7/dist-
packages/selenium/webdriver/firefox/webdriver.py", line 148, in __init__
    self.service.start()
  File "/usr/local/lib/python2.7/dist-
packages/selenium/webdriver/common/service.py", line 97, in start
    if self.is_connectable():
  File "/usr/local/lib/python2.7/dist-
packages/selenium/webdriver/common/service.py", line 113, in is_connectable
    return utils.is_connectable(self.port)
  File "/usr/local/lib/python2.7/dist-
packages/selenium/webdriver/common/utils.py", line 106, in is_connectable
    socket_ = socket.create_connection((host, port), 1)
  File "/usr/lib/python2.7/socket.py", line 566, in create_connection
    sock.connect(sa)
  File "/usr/local/lib/python2.7/dist-packages/socks.py", line 96, in wrapper
    return function(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/socks.py", line 813, in 
connect
    negotiate(self, dest_addr, dest_port)
  File "/usr/local/lib/python2.7/dist-packages/socks.py", line 477, in 
_negotiate_SOCKS5
    CONNECT, dest_addr)
  File "/usr/local/lib/python2.7/dist-packages/socks.py", line 552, in 
_SOCKS5_request
    raise SOCKS5Error("{0:#04x}: {1}".format(status, error))
 socks.SOCKS5Error: 0x01: General SOCKS server failure

Что ж, это лучшее, что я могу сделать, я хочу, чтобы мой скрипт продолжал менять свой IP в цикле, и все остальные вопросы как раз о начале селена. Есть ли способ сделать это? Как изменить IP в цикле, когда селен работает? Если ваш метод использует stem и socks5, то я буду счастлив, потому что мне не нужно будет редактировать мой сценарий и все остальные, но и другой метод будет в порядке. Просто мне нужно, чтобы это сработало.

Помощь будет оценена много,

С уважением, Джастин

0 ответов

Другие вопросы по тегам