Я использую selenium-wire и веб-драйвер Firefox для доступа к веб-сайту (онлайн-игра). Я запускаю скрипт Python в своей локальной сети, и для доступа в Интернет не требуется прокси-сервер.
Вот выдержка из моего кода:
#!C:/Python38-32/python.exe
from seleniumwire import webdriver # Import from seleniumwire
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver import ActionChains
# Create a new instance of the Firefox driver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
binary = FirefoxBinary(r'C:\\Program Files\\Mozilla Firefox\\firefox.exe')
driver = webdriver.Firefox(firefox_binary=binary)
# Go to the home page
driver.get('https://fr0.forgeofempires.com/page/')
iframe = driver.find_element_by_tag_name('iframe')
iframe_switched = driver.switch_to.frame(iframe)
useridInput = driver.find_element_by_id('login_userid')
useridInput.click();
useridInput.send_keys('myuser');
login_passwordInput = driver.find_element_by_id('login_password')
login_passwordInput.click();
login_passwordInput.send_keys('mypass');
loginButton = driver.find_element_by_id('login_Login')
loginButton.click();
defaultContent_switched = driver.switch_to.default_content()
WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "play_now_button"))
)
play_nowButton = driver.find_element_by_id('play_now_button')
play_nowButton.click();
WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.LINK_TEXT, "ServerName"))
)
Button = driver.find_element_by_link_text('ServerName')
Button.click();
Все работает нормально до этого момента. Теперь страница должна загрузить игру по новому URL (https://xxx.forgeofempires.com/game), но он застревает. Если я нажимаю F5, я получаю сообщение Прокси-сервер отказывается от подключений. Я зашел в настройки прокси-сервера Firefox и заметил, что они изменились с Без прокси или Использовать системные настройки прокси на Вручную 127.0.0.1. Я предполагаю, что это Selenium-wire меняет это, чтобы проверить трафик?
Моя конечная цель — поймать ответы XHR, сгенерированные на странице, поэтому я использую Selenium-wire.
Что может привести к блокировке прокси-сервера localhost при подключении к веб-сайту? Как я могу это исправить?
Если я заменю
from seleniumwire import webdriver # Import from seleniumwire
by
from selenium import webdriver # Import from selenium
он отлично работает, но тогда я не смогу поймать ответы XHR. Я также пробовал mitmproxy, но мне не удалось заставить его работать.
ОБНОВЛЕНИЕ 1:
Я сделал полностью нерабочий пример, который показывает, что Selenium-wire делает что-то не так. В приведенном ниже примере страница результатов Google не может быть загружена.
#!C:/Python38-32/python.exe
from seleniumwire import webdriver # Import from seleniumwire
#from selenium import webdriver # Import from selenium
from selenium.webdriver.common.keys import Keys
# Create a new instance of the Firefox driver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
binary = FirefoxBinary(r'C:\\Program Files\\Mozilla Firefox\\firefox.exe')
driver = webdriver.Firefox(firefox_binary=binary)
driver.maximize_window()
# Go to the home page
driver.get('https://www.google.se/')
useridInput = driver.find_element_by_name('q')
useridInput.click();
useridInput.send_keys('test');
driver.find_element_by_name("q").send_keys(Keys.ENTER)