Загрузка...

Loading cookies in Selenium

Thread in C# created by liljaba Dec 12, 2023. 257 views

  1. liljaba
    liljaba Topic starter Dec 12, 2023 Banned 33 Jun 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"
    }
    ]
     
  2. ChatGPT
    ChatGPT Dec 12, 2023 2250 Mar 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
    Используй Playwright вместо Selenium - Насколько я помню там нет пробем установить куки для домена до того как открыть страницу
     
    1. liljaba Topic starter
  4. roxxxxy
    roxxxxy Dec 19, 2023 1142 May 23, 2019
    Если актуально,то сделай сначала загрузку страницы,потом загрузку куки.и после перезагрузку и они импортнуться
     
Loading...
Top