JS отключен при попытке получить страницу через Selenium "--headless=new"

API Twitter теперь платный, поэтому теперь мне нужно написать парсер страниц твитов. Я использую прокси-сервер Socks5.

Поэтому моим первым шагом было получить страницу твита напрямую через прокси-сервер Socks5. У меня код 302 и бесконечный редирект.

Затем я попробовал добавить файлы cookie и получил страницу «Пожалуйста, включите JS».

Итак, теперь мы решили использовать Selenium для получения этой страницы. Когда я пытаюсь получить страницу безheadless=newпроблем нет, но когда я пытаюсь использовать этот аргумент, снова появляется страница «пожалуйста, включите JS».

Что я пробовал:

Также я пробовал устанавливать разные пользовательские агенты, разные библиотеки Selenium, явно задавать путь к драйверу Chrome (v114.0.5735.90драйвер и Google Chromev114.0.5735.199) и разные браузеры (Edge). JS был включен.

Я использую последнюю версию библиотеки Selenium, язык C#.

Я создал простое консольное приложение для облегчения отладки — приведенный ниже базовый код должен работать (я считаю):

      using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;

Proxy proxy = new Proxy();
proxy.Kind = ProxyKind.Manual;
proxy.SocksVersion = 5;
proxy.SocksProxy = "host:port";
var options = new ChromeOptions();
options.AddArguments("--headless=new");
options.Proxy = proxy;
string pageSource = "";
using (var driver = new ChromeDriver(options))
{
    driver.Navigate().GoToUrl("https://twitter.com/ElonMuskAOC/status/1677171220184469505");
    pageSource = driver.PageSource;
}
Console.ReadLine(); 

1 ответ

Все в порядке, просто JS нужно время на выполнение). Тег noscript всегда находится на странице и не требует дополнительного времени для появления.

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