Загрузка расширений ChromeDriver или прокси-серверов ChromeDriver и Elixir

Я пишу веб-скребок, который я пытаюсь прокси, но не могу понять, как это сделать в Elixir.

Я использую Hound, работающий поверх безголового ChromeDriver. Я купил несколько IP-адресов прокси через https://luminati.io/ и они предлагают как расширение Chrome, так и базовый прокси-сервер пользователя / пароля.

Действия Webscraper состоят из GenServer, который представляет пользователя, очищающего сеть. Внешнего интерфейса приложения нет, оно принимает команды, которые отправляются ему через бота, который я построил на Telegram, поэтому, когда пользователь отправляет, например, команду входа в систему, он запускает функцию входа в GS.

В этот момент GenServer изменит сеанс ChromeDriver с помощью Hound.change_session_to/2, а затем зарегистрирует пользователя.

Это прекрасно работает, но теперь я хочу отправлять каждый запрос через прокси-сервер с помощью имени пользователя и пароля. Изменяя сеанс с Hound, он также позволяет устанавливать chromeOptions.

ua = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36"
change_session_to(String.to_atom(account.username), %{browserName: "chrome", chromeOptions: %{"args" => ["--user-agent=#{ua}", "--proxy-server=http://user:password@proxy.luminati.io:22225"]}})
navigate_to "https://www.website.com/"

Еще одна вещь, которую я попытался сделать, это загрузка ChromeExtension от luminati, которую я смог бы использовать для прокси-трафика, но не могу загрузить расширение для каждой сессии. Я скачал упакованное расширение CRM chrome и поместил его в свою папку priv. Когда сеанс загружается, кажется, что пользовательский агент загружается нормально, но расширение никогда не запускается. Когда я пытаюсь загрузить расширение, я не работаю без головы.

ua = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36"
priv_dir = :code.priv_dir(:boost_buddy)
change_session_to(String.to_atom(account.username), %{browserName: "chrome", 
chromeOptions: %{"extensions" => ['#{priv_dir}/luminati/3.2_1'], "args" => ["-
-user-agent=#{ua}", "--proxy-server=http://user:password@proxy.luminati.io:22225"]}})
navigate_to "https://www.website.com/"

У кого-нибудь есть опыт использования хром-драйвера с Elixir? С Ruby и Java настройка расширения обычно не представляет проблем.

1 ответ

https://github.com/GoogleChrome/puppeteer/issues/659

-1 потому что это был лучший результат для поиска в Google "Chrome Headless Extension"

Что касается отправки каждого запроса через прокси-сервер, я думаю, что вам нужно либо взаимодействовать с драйвером chrome самостоятельно (угонять собаку), либо пропустить собаку и использовать либо хром напрямую, либо через сетку селена.

Я думаю, что проблема связана с тем фактом, что гончая будет инициировать один единственный экземпляр Chrome, где будут определены параметры прокси. Дальнейшие запросы выполняются с использованием этого прокси.

Таким образом, чтобы получить несколько прокси-соединений для разных сессий, вам либо нужен способ установить их с помощью шагов навигации (посещение прокси-сайта, который затем служит жестким прокси), либо использовать разные экземпляры браузера вообще (хотя я могу ошибаться и, возможно, есть более простой способ проксирования запросов)

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