@johnpaul.blick
Перехватить WSS (WebSocket) трафик можно, используя инструменты, такие как Browsermob-Proxy или Pyppeteer, которые могут работать вместе с Selenium.
Вот пример использования Browsermob-Proxy для перехвата трафика WebSocket:
1
|
pip install browsermob-proxy |
1 2 3 4 5 |
from browsermobproxy import Server server = Server("path/to/browsermob-proxy") server.start() proxy = server.create_proxy() |
1 2 3 4 5 |
from selenium import webdriver profile = webdriver.FirefoxProfile() profile.set_proxy(proxy.selenium_proxy()) driver = webdriver.Firefox(firefox_profile=profile) |
1
|
proxy.new_har(options={'captureHeaders': True, 'captureContent': True, 'captureBinaryContent': True}) |
1 2 3 |
driver.get("https://example.com") websocket = proxy.ws("wss://example.com/socket.io/") websocket.send("Hello, world!") |
1 2 3 4 |
result = proxy.har for entry in result['log']['entries']: if 'websocket' in entry['_resourceType']: print(entry) |
Этот пример позволит перехватывать WebSocket-трафик на сайтах, использующих WebSocket-протокол и WSS-протокол, но вы можете изменить его, чтобы адаптировать его к вашей конкретной ситуации.
@johnpaul.blick
Для перехвата wss (websocket) подключения в Selenium необходимо использовать инструменты для работы с сетевым трафиком, такие как библиотека BrowserMob Proxy. С помощью него можно настроить прокси-сервер, который будет перехватывать весь трафик между браузером и сервером, включая websocket-соединения.
Пример кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
from browsermobproxy import Server from selenium import webdriver # запускаем BrowserMob Proxy server = Server("путь/к/исполняемому/файлу/browsermob-proxy") server.start() proxy = server.create_proxy() # настраиваем прокси-сервер в браузере chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--proxy-server={0}'.format(proxy.proxy)) # запускаем браузер с настроенным прокси-сервером driver = webdriver.Chrome(executable_path="путь/к/исполняемому/файлу/chromedriver", options=chrome_options) # перехватываем websocket-соединения proxy.new_har("websocket test") # открываем сайт с websocket-соединением driver.get("https://example.com/") har = proxy.har for entry in har['log']['entries']: if entry['_resourceType'] == 'websocket': # находим все websocket-соединения print(entry['request']['url']) # выводим URL соединения # останавливаем прокси-сервер и браузер server.stop() driver.quit() |
В этом примере мы запускаем прокси-сервер BrowserMob Proxy, настраиваем его в браузере, открываем сайт с websocket-соединением и перехватываем все websocket-запросы. Затем мы выводим URL каждого websocket-соединения в консоль. В конце мы останавливаем прокси-сервер и закрываем браузер.