Загрузка...

Загрузка куков в селениуме

Тема в разделе C# создана пользователем liljaba 12 дек 2023. 230 просмотров

Загрузка...
  1. liljaba
    liljaba Автор темы 12 дек 2023 Заблокирован(а) 33 24 июн 2021
    Хочу войти по кукам, но при их загрузке выходит ошибка: OpenQA.Selenium.InvalidCookieDomainException: invalid cookie domain: cookie 'domain' mismatch

    Для того, чтобы их загрузить, по идее, надо быть на том же домене, что и кук. Но для куков стима, например, это в принципе невозможно. Там есть кук для login.steampowered.com, а если на него перейти, то сразу же редиректнет на другую страницу. Есть ли какой нибудь способ обойти это ограничение и загрузить любые куки?

    CSHARP
    static void Main(string[] args)
    {
    IWebDriver driver = new ChromeDriver();
    string[] allcookies = File.ReadAllLines("test.txt");
    List<Cookie> cookies = CookieConverter.ConvertNetscapeCookies(allcookies);
    driver.Url = "https://steamcommunity.com/";
    foreach (Cookie cookie in cookies)
    {
    Console.WriteLine("Domain: "+cookie.Domain);
    driver.Manage().Cookies.AddCookie(cookie);
    }
    driver.Url = "https://steamcommunity.com/";
    }
    [
    {
    "domain":"store.steampowered.com",
    "path":"\/",
    "name":"browserid",
    "value":"1234"
    },
    {
    "domain":"store.steampowered.com",
    "path":"\/",
    "name":"sessionid",
    "value":"5678"
    },
    {
    "domain":"help.steampowered.com",
    "path":"\/",
    "name":"steamCountry",
    "value":"dsadsadsadsa"
    },
    {
    "domain":"checkout.steampowered.com",
    "path":"\/",
    "name":"steamLoginSecure",
    "value":"dasdasdsadas"
    },
    {
    "domain":"login.steampowered.com",
    "path":"\/",
    "name":"steamRefresh_steam",
    "value":"dsadsadsaads"
    },
    {
    "domain":"help.steampowered.com",
    "path":"\/",
    "name":"timezoneOffset",
    "value":"-10800,0"
    },
    {
    "domain":"store.steampowered.com",
    "path":"\/",
    "name":"app_impressions",
    "value":"dsadsaads"
    },
    {
    "domain":"store.steampowered.com",
    "path":"\/",
    "name":"deep_dive_carousel_focused_app",
    "value":"1234"
    },
    {
    "domain":"store.steampowered.com",
    "path":"\/",
    "name":"deep_dive_carousel_method",
    "value":"default"
    },
    {
    "domain":".steamcommunity.com",
    "path":"\/",
    "name":"_ga",
    "value":"dsadsadsa"
    },
    {
    "domain":"steamcommunity.com",
    "path":"\/",
    "name":"sessionid",
    "value":"dasdsadassd"
    },
    {
    "domain":"steamcommunity.com",
    "path":"\/",
    "name":"steamCountry",
    "value":"dsadasdasdas"
    },
    {
    "domain":"steamcommunity.com",
    "path":"\/",
    "name":"steamLoginSecure",
    "value":"dsadsadasasd"
    },
    {
    "domain":"steamcommunity.com",
    "path":"\/",
    "name":"browserid",
    "value":"1234"
    },
    {
    "domain":"steamcommunity.com",
    "path":"\/",
    "name":"app_impressions",
    "value":"dsadasdasdsa"
    },
    {
    "domain":"steamcommunity.com",
    "path":"\/",
    "name":"timezoneOffset",
    "value":"-10800,0"
    }
    ]
     
    12 дек 2023 Изменено
  2. ChatGPT
    ChatGPT 12 дек 2023 2254 14 мар 2023
    liljaba Проблема, которую вы столкнулись, связана с ограничением безопасности браузера, которое не позволяет загружать куки для доменов, отличных от текущего домена страницы. В вашем случае, куки для домена "login.steampowered.com" не могут быть загружены, так как вы находитесь на домене "steamcommunity.com".

    Однако, есть несколько способов обойти это ограничение:

    1. Используйте расширение браузера, которое позволяет управлять куками. Например, в Google Chrome вы можете использовать расширение "EditThisCookie". Оно позволяет вам импортировать куки из файла и установить их для любого домена.

    2. Вместо использования Selenium WebDriver для загрузки кук, вы можете использовать HTTP-клиент, такой как HttpClient в C#, чтобы отправить запрос с заголовком "Cookie", содержащим все необходимые куки. Это позволит вам установить куки для любого домена.

    Вот пример использования HttpClient для отправки запроса с куками:

    CSHARP

    using System;
    using System.Net.Http;
    using System.Net.Http.Headers;

    static async Task Main(string[] args)
    {
    HttpClient client = new HttpClient();
    string[] allcookies = File.ReadAllLines("test.txt");
    string cookiesString = string.Join("; ", allcookies);
    client.DefaultRequestHeaders.Add("Cookie", cookiesString);

    HttpResponseMessage response = await client.GetAsync("https://steamcommunity.com/");
    string responseBody = await response.Content.ReadAsStringAsync();

    Console.WriteLine(responseBody);
    }
    Вы должны заменить "test.txt" на путь к файлу с вашими куками.

    Надеюсь, это поможет вам загрузить куки для разных доменов. Если у вас возникнут дополнительные вопросы, пожалуйста, дайте мне знать.
     
  3. vtlstolyarov
    vtlstolyarov 12 дек 2023 474 8 янв 2022
    Используй Playwright вместо Selenium - Насколько я помню там нет пробем установить куки для домена до того как открыть страницу
     
    1. liljaba Автор темы
  4. roxxxxy
    roxxxxy 19 дек 2023 1142 23 май 2019
    Если актуально,то сделай сначала загрузку страницы,потом загрузку куки.и после перезагрузку и они импортнуться
     
Top