Обход TLS отпечатков при работе через Post/Get для Akamai и Cloudflare и для других сайтов

Dmitrybyapple

Client
Регистрация
22.02.2015
Сообщения
79
Благодарностей
89
Баллы
18
Как обойти проверку TLS в современных системах защиты Akamai и Cloudflare при выполнении POST/GET-запросов.

Привет! Это моя первая статья на конкурс, хотя в сфере автоматизации я уже более 10 лет. Сегодня хочу поделиться своим опытом и рассказать о решении, которое позволяет успешно работать с сайтами, использующими современные защиты, такие как Akamai и Cloudflare.

Немного теории

В какой-то момент многие сайты, с которыми я работал годами, перестали отвечать на запросы. Поиск причины оказался долгим и утомительным — все запросы через POST/GET стали возвращать ошибку Access Denied. Раньше для обхода подобных блокировок было достаточно корректно передавать User-Agent и другие заголовки. Однако современные системы защиты научились анализировать не только заголовки, но и само взаимодействие клиента с сервером, получая уникальные отпечатки приложения, через которое выполняется запрос.


Например, даже у разных версий Chrome отпечатки TLS отличаются. Таким образом, обычная подмена заголовков уже не помогает, так как теперь необходимо контролировать и эмулировать Client Hello-запросы, в которых содержится уникальный отпечаток браузера. При дальнейших исследованиях стало ясно, что даже с помощью C# полноценно подменить и эмулировать эти данные невозможно.

Что такое Client Hello?

Client Hello
— это первое сообщение, которое клиент отправляет серверу при установлении TLS (или SSL) соединения. Оно содержит следующие данные:


Основные параметры:
  • Версия протокола TLS (например, TLS 1.2 или TLS 1.3);
  • Случайное число (Random) (32 байта: 4 байта — Unix timestamp, 28 байт — криптографически случайные);
  • Идентификатор сессии (Session ID) (если соединение возобновляется);
  • Список поддерживаемых шифров (Cipher Suites) (например, TLS_AES_128_GCM_SHA256, TLS_CHACHA20_POLY1305_SHA256);
  • Методы сжатия (Compression Methods) (обычно NULL в TLS 1.2 и 1.3).

Дополнительные расширения (Extensions):
  • Server Name Indication (SNI) — имя хоста, например example.com;
  • Supported Groups (Elliptic Curves) — перечень поддерживаемых эллиптических кривых, например X25519;
  • Key Share (TLS 1.3) — отправка публичного ключа;
  • Signature Algorithms — поддерживаемые алгоритмы подписи;
  • ALPN (Application-Layer Protocol Negotiation) — выбор протокола, например HTTP/2;
  • Supported Versions — перечень поддерживаемых версий TLS;
  • PSK (Pre-Shared Key) — если используется для возобновления соединения.

Как стало понятно, работать с запросами на таком уровне через стандартные HTTP-клиенты нельзя. Для решения этой проблемы необходимо использовать специализированные инструменты.

Решение проблемы

1. Установка обхода TLS через API


Для обхода современных TLS-защит мы будем использовать tls-client-api. Скачиваем его с GitHub по ссылке: https://github.com/bogdanfinn/tls-client-api/releases

Из списка файлов нам нужны два:
  • tls-client-api-windows-64-1.8.0.exe
  • config.dist.yml
Скачиваем их и помещаем в одну папку.

2. Запуск сервера обхода

Запускаем tls-client-api-windows-64-1.8.0.exe. После запуска API будет доступно по адресу: http://127.0.0.1:8080/api/forward

Проверяем работу API в браузере, перейдя по этому адресу. Если сервер успешно запущен, в ответе будет отображаться:
Код:
{"apiKey":"no api key provided"}
Теперь у нас есть локальный сервер, который позволяет обходить TLS-защиты при выполнении запросов.

3. Выполнение POST/GET запросов через сервер обхода

Выполняем GET запрос к https://tls.peet.ws/api/all:

Создаем POST запрос по адресу http://127.0.0.1:8080/api/forward.​
В данные указываем:​
Код:
{
  "tlsClientIdentifier": "chrome_105",
  "requestUrl": "https://tls.peet.ws/api/all",
  "requestMethod": "GET",
  "sessionId": "my-custom-sessionid"
}
sessionId указываем, если нужна работа с куками, генерируем рандомную строку. API поддерживает автоматическую работу с куками при указании sessionId.​
131783
В заголовки обязательно добавляем:
Код:
x-api-key: my-auth-key-1
Это ключ для доступа к нашему API.​
131784

  • Для POST запроса аналогичные параметры, только добавляем тело запроса:
Код:
{
  "tlsClientIdentifier": "chrome_105",
  "requestUrl": "https://tls.peet.ws/api/all",
  "requestMethod": "POST",
  "sessionId": "my-custom-sessionid",
  "RequestBody": "тут передаем тело пост запроса"
}
Дополнительные параметры:​

  • TlsClientIdentifier — идентификатор клиента (chrome_105);
  • FollowRedirects — следовать за редиректами;
  • InsecureSkipVerify — игнорировать проверку сертификатов (false);
  • IsByteRequest — запрос в байтах (false);
  • ForceHttp1 — принудительно использовать HTTP/1.1 (false);
  • WithDebug — включить отладку (false);
  • WithRandomTLSExtensionOrder — случайный порядок расширений TLS (true);
  • sessionId — идентификатор сессии;
  • TimeoutSeconds — таймаут в секундах;
  • Headers — дополнительные заголовки;
  • RequestBody — тело запроса.
  • ProxyUrl - прокси формата "http://127.0.0.1:8888"

C#:
/// <summary>
/// Создает экземпляр класса TLSSession для настройки HTTPS-сессии.
/// </summary>
/// <param name="TlsClientIdentifier">Идентификатор клиента TLS (например, для имитации браузера). По умолчанию "FireFox110".</param>
/// <param name="TimeoutSeconds">Таймаут в секундах для выполнения запросов. По умолчанию 30 секунд.</param>
/// <param name="FollowRedirects">Указывает, следует ли автоматически следовать за перенаправлениями (HTTP 3xx). По умолчанию true.</param>
/// <param name="proxy">Прокси-сервер для использования в сессии. По умолчанию null (без прокси).</param>
public TLSSession( string TlsClientIdentifier = "FireFox110", int TimeoutSeconds = 30, bool FollowRedirects = true, string proxy = null)
{
    this.Referer = "";
    this.headersDefault = new Dictionary<string, string>();
    this.cd = new Dictionary<string, string>();

    this.sessionID = Guid.NewGuid().ToString();

    this.sessionPayload = new RequestPayload
    {
        TlsClientIdentifier = TlsClientIdentifier,
        FollowRedirects = FollowRedirects,
        InsecureSkipVerify = false,
        IsByteRequest = false,
        ForceHttp1 = false,
        WithDebug = false,
        CatchPanics = false,
        WithRandomTLSExtensionOrder = true,
        sessionId = this.sessionID,
        TimeoutSeconds = TimeoutSeconds,
        TimeoutMilliseconds = 0,
        CertificatePinningHosts = new Dictionary<string, string>(),
        ProxyUrl = "",
        IsRotatingProxy = false,
        Headers =  new Dictionary<string, string>(),
        RequestUrl = "",
        RequestMethod = "",
        RequestBody = "",
        RequestCookies = new List<object>(),
    };
    if (proxy != null)
    {
        Console.WriteLine(proxy);
        this.sessionPayload.ProxyUrl = proxy;
    }
}
Что это дает?
Используя tls-client-api, мы можем обойти защиты, такие как Akamai и Cloudflare. Это позволяет работать с сайтом, как будто запросы идут от настоящего браузера, что делает их невидимыми для этих защит. Однако важно понимать, что защита все равно продолжает работать, и если сайт требует валидные куки, то без них запросы все равно не пройдут. Но если у вас есть актуальные куки (например, полученные из браузера), то запросы будут успешно выполняться и вы получите правильные ответы.​
Что дальше?
Получение валидных кук — это следующая сложная задача, с которой часто сталкиваются при работе с защищенными сайтами. Это связано с тем, что нужно правильно эмулировать браузер, обходить системы защиты и собирать нужные данные. Я планирую рассказать о том, как генерировать валидные куки, в следующей статье!​
Надеюсь, статья будет полезна и интересна!​
пример из комментариев​

Код:
{
    "tlsClientIdentifier": "chrome_133",
    "requestUrl": "https://tls.peet.ws/api/all",
    "requestMethod": "GET",
    "followRedirects": true,
    "insecureSkipVerify": false,
    "withoutCookieJar": false,
    "withDefaultCookieJar": false,
    "isByteRequest": false,
    "forceHttp1": false,
    "withDebug": true,
    "catchPanics": true,
    "withRandomTLSExtensionOrder": false,
    "timeoutSeconds": 30,
    "timeoutMilliseconds": 0,
    "sessionId": "my-custom-session-id",
    "proxyUrl": "",
    "isRotatingProxy": false,
    "certificatePinningHosts": {
    },
    "headers": {
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36",
        "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
        "accept-encoding": "gzip, deflate, br, zstd",
        "accept-language": "ru-RU,ru;q=0.9",
        "sec-ch-ua": "\"Chromium\";v=\"133\", \"Not:A-Brand\";v=\"24\", \"Google Chrome\";v=\"133\"",
        "sec-ch-ua-mobile": "?0",
        "sec-ch-ua-platform": "\"Windows\"",
        "sec-fetch-dest": "document",
        "sec-fetch-mode": "navigate",
        "sec-fetch-site": "none",
        "sec-fetch-user": "?1",
        "upgrade-insecure-requests": "1",
        "priority": "u=0, i"
    },
    "headerOrder": [
        "sec-ch-ua",
        "sec-ch-ua-mobile",
        "sec-ch-ua-platform",
        "upgrade-insecure-requests",
        "user-agent",
        "accept",
        "sec-fetch-site",
        "sec-fetch-mode",
        "sec-fetch-user",
        "sec-fetch-dest",
        "accept-encoding",
        "accept-language",
        "priority"
    ],
    "requestBody": "",
    "requestCookies": [
    ]
}
 
Последнее редактирование:

zarufakis

Client
Регистрация
22.03.2019
Сообщения
1 804
Благодарностей
1 198
Баллы
113
Я планирую рассказать о том, как генерировать валидные куки, в следующей статье!
Было бы любопытно почитать, т.к. тема очень интересная, голосую за статью и буду ждать.
 

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 784
Благодарностей
1 376
Баллы
113
И все это добро идет напрямую с компа без прокси?
 

Manfredman

Client
Регистрация
25.10.2017
Сообщения
19
Благодарностей
4
Баллы
3
Давай генерацию Akamai sensor data))))
 

Dmitrybyapple

Client
Регистрация
22.02.2015
Сообщения
79
Благодарностей
89
Баллы
18

sw_sw

Client
Регистрация
24.02.2017
Сообщения
780
Благодарностей
311
Баллы
63
Кажется, у нас фаворит!

Т.с. А как обстоит дело с вебвью в приложениях? Там такая же шляпа может быть ?
 
  • Спасибо
Реакции: Dmitrybyapple

Dmitrybyapple

Client
Регистрация
22.02.2015
Сообщения
79
Благодарностей
89
Баллы
18
Кажется, у нас фаворит!
Нужно чтобы голосовали, чтобы быть фаворитом)

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

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 860
Благодарностей
2 573
Баллы
113
Подскажите, а как себя чувствует "посредник" например если запросов будет много?
Хорошо держит нагрузку, или не тестировали?
 

Dmitrybyapple

Client
Регистрация
22.02.2015
Сообщения
79
Благодарностей
89
Баллы
18
Подскажите, а как себя чувствует "посредник" например если запросов будет много?
Хорошо держит нагрузку, или не тестировали?
Да, постоянно работает на объеме с разными сайтами, 300+ потоков
 
  • Спасибо
Реакции: BAZAg

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 860
Благодарностей
2 573
Баллы
113
Да, постоянно работает на объеме с разными сайтами, 300+ потоков
Беру на заметку!
Эх... Столько полезной информации насобиралось, что даже не знаю когда успею все изучить и попробовать использовать!
 

heks

Client
Регистрация
01.10.2013
Сообщения
1 311
Благодарностей
361
Баллы
83
чую мой голос будет у этого пользователя/ Что то попробовал отправить запрос на https://chaturbate.com/auth/login/ выходит все равно такая же ошибка((( печалька
Хотя может что то и не то сделал))
 
Последнее редактирование:
  • Спасибо
Реакции: Dmitrymxc и Dmitrybyapple

farmaldo

Client
Регистрация
13.08.2017
Сообщения
41
Благодарностей
18
Баллы
8
Спасибо автору что хоть кто-то начал эту тему. Сам реализовывал пару лет назад такое, только другим способом, тоже хотел написать статью в знак благорности продукту зенки который даёт хлеб) но лень. Есть кстати и платные продукты для решения таких задач. Вообще хеш отпечатка hello пакета можно посмотреть в wireshark, и если использовать стандартные кубики зенки для post/get, то данный хеш с 2018г находится в базе малварей, хорошо что про эту базу не знают сайты)
Для кототкой справки, у tor браузера всегда один и тотже отпечаток, у chrome он меняется раз в несколько версий(тоесть если вы даёте useragent от 115 хрома, а под капотом у вас 137 например хром, то умный сайт поймёт обман). В целом любое по которое устанавливает защищенное соединение имеет свой уникальный отпечаток hello пакета(если только он не использует какую-то стандартную библиотеку для установки щифрованного соединения) тема очень обширная, кому интересно гуглите ja3/ja4 fingerprint
 
Последнее редактирование:

deukech

Client
Регистрация
11.09.2014
Сообщения
198
Благодарностей
134
Баллы
43

heks

Client
Регистрация
01.10.2013
Сообщения
1 311
Благодарностей
361
Баллы
83
а пример шаблона то хоть будет ? Как проверить работоспособность метода ?
 
  • Спасибо
Реакции: Roman*

heks

Client
Регистрация
01.10.2013
Сообщения
1 311
Благодарностей
361
Баллы
83

zarufakis

Client
Регистрация
22.03.2019
Сообщения
1 804
Благодарностей
1 198
Баллы
113
Упрощу сообществу задачу с которой сам мучался, пока не нашел примеры.
Теперь юзерагент передается в заголовках правильно.
В тело запроса requestBody как json нужно экранировать кавычки

C#:
{
    "tlsClientIdentifier": "chrome_133",
    "requestUrl": "https://tls.peet.ws/api/all",
    "requestMethod": "GET",
    "followRedirects": true,
    "insecureSkipVerify": false,
    "withoutCookieJar": false,
    "withDefaultCookieJar": false,
    "isByteRequest": false,
    "forceHttp1": false,
    "withDebug": true,
    "catchPanics": true,
    "withRandomTLSExtensionOrder": false,
    "timeoutSeconds": 30,
    "timeoutMilliseconds": 0,
    "sessionId": "my-custom-session-id",
    "proxyUrl": "",
    "isRotatingProxy": false,
    "certificatePinningHosts": {
    },
    "headers": {
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36",
        "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
        "accept-encoding": "gzip, deflate, br, zstd",
        "accept-language": "ru-RU,ru;q=0.9",
        "sec-ch-ua": "\"Chromium\";v=\"133\", \"Not:A-Brand\";v=\"24\", \"Google Chrome\";v=\"133\"",
        "sec-ch-ua-mobile": "?0",
        "sec-ch-ua-platform": "\"Windows\"",
        "sec-fetch-dest": "document",
        "sec-fetch-mode": "navigate",
        "sec-fetch-site": "none",
        "sec-fetch-user": "?1",
        "upgrade-insecure-requests": "1",
        "priority": "u=0, i"
    },
    "headerOrder": [
        "sec-ch-ua",
        "sec-ch-ua-mobile",
        "sec-ch-ua-platform",
        "upgrade-insecure-requests",
        "user-agent",
        "accept",
        "sec-fetch-site",
        "sec-fetch-mode",
        "sec-fetch-user",
        "sec-fetch-dest",
        "accept-encoding",
        "accept-language",
        "priority"
    ],
    "requestBody": "",
    "requestCookies": [
    ]
}
А куки передается так

C#:
    "requestCookies": [
        {
            "name": "foo2",
            "value": "bar2"
        },
        {
            "name": "bar2",
            "value": "baz2"
        }
    ]
 
Последнее редактирование:

volody00

Client
Регистрация
06.09.2016
Сообщения
970
Благодарностей
1 065
Баллы
93
все больше и больше сайтов требует этой эмуляции
Выше уже просили, я тоже попрошу. Можно пример такого сайта, чтобы на практике посмотреть? Вот с зенки не проходит, а этим методом проходит (чтобы там не было навешано других защит как на клауде). Или под рукой ничего нет?
 

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 885
Благодарностей
1 628
Баллы
113
Упрощу сообществу рзадачу с которой сам мучался, пока не нашел примеры.
Теперь юзерагент передается в заголовках правильно.
В тело запроса requestBody как json нужно экранировать кавычки

Код:
{
    "tlsClientIdentifier": "chrome_133",
    "requestUrl": "https://tls.peet.ws/api/all",
    "requestMethod": "GET",
    "followRedirects": true,
    "insecureSkipVerify": false,
    "withoutCookieJar": false,
    "withDefaultCookieJar": false,
    "isByteRequest": false,
    "forceHttp1": false,
    "withDebug": true,
    "catchPanics": true,
    "withRandomTLSExtensionOrder": false,
    "timeoutSeconds": 30,
    "timeoutMilliseconds": 0,
    "sessionId": "my-custom-session-id",
    "proxyUrl": "",
    "isRotatingProxy": false,
    "certificatePinningHosts": {
    },
    "headers": {
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36",
        "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
        "accept-encoding": "gzip, deflate, br, zstd",
        "accept-language": "ru-RU,ru;q=0.9",
        "sec-ch-ua": "\"Chromium\";v=\"133\", \"Not:A-Brand\";v=\"24\", \"Google Chrome\";v=\"133\"",
        "sec-ch-ua-mobile": "?0",
        "sec-ch-ua-platform": "\"Windows\"",
        "sec-fetch-dest": "document",
        "sec-fetch-mode": "navigate",
        "sec-fetch-site": "none",
        "sec-fetch-user": "?1",
        "upgrade-insecure-requests": "1",
        "priority": "u=0, i"
    },
    "headerOrder": [
        "sec-ch-ua",
        "sec-ch-ua-mobile",
        "sec-ch-ua-platform",
        "upgrade-insecure-requests",
        "user-agent",
        "accept",
        "sec-fetch-site",
        "sec-fetch-mode",
        "sec-fetch-user",
        "sec-fetch-dest",
        "accept-encoding",
        "accept-language",
        "priority"
    ],
    "requestBody": "",
    "requestCookies": [
    ]
}
Как же я уважаю таких людей которые помогают, экономя время других, спасибо огромное. Прям настроение поднял мне, хоть я и не пользуюсь этим но сам факт. Приятно. Побольше бы таких отзывчивых людей. :az:
 

Dmitrybyapple

Client
Регистрация
22.02.2015
Сообщения
79
Благодарностей
89
Баллы
18
Упрощу сообществу задачу с которой сам мучался, пока не нашел примеры.
Теперь юзерагент передается в заголовках правильно.
В тело запроса requestBody как json нужно экранировать кавычки

Код:
{
    "tlsClientIdentifier": "chrome_133",
    "requestUrl": "https://tls.peet.ws/api/all",
    "requestMethod": "GET",
    "followRedirects": true,
    "insecureSkipVerify": false,
    "withoutCookieJar": false,
    "withDefaultCookieJar": false,
    "isByteRequest": false,
    "forceHttp1": false,
    "withDebug": true,
    "catchPanics": true,
    "withRandomTLSExtensionOrder": false,
    "timeoutSeconds": 30,
    "timeoutMilliseconds": 0,
    "sessionId": "my-custom-session-id",
    "proxyUrl": "",
    "isRotatingProxy": false,
    "certificatePinningHosts": {
    },
    "headers": {
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36",
        "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
        "accept-encoding": "gzip, deflate, br, zstd",
        "accept-language": "ru-RU,ru;q=0.9",
        "sec-ch-ua": "\"Chromium\";v=\"133\", \"Not:A-Brand\";v=\"24\", \"Google Chrome\";v=\"133\"",
        "sec-ch-ua-mobile": "?0",
        "sec-ch-ua-platform": "\"Windows\"",
        "sec-fetch-dest": "document",
        "sec-fetch-mode": "navigate",
        "sec-fetch-site": "none",
        "sec-fetch-user": "?1",
        "upgrade-insecure-requests": "1",
        "priority": "u=0, i"
    },
    "headerOrder": [
        "sec-ch-ua",
        "sec-ch-ua-mobile",
        "sec-ch-ua-platform",
        "upgrade-insecure-requests",
        "user-agent",
        "accept",
        "sec-fetch-site",
        "sec-fetch-mode",
        "sec-fetch-user",
        "sec-fetch-dest",
        "accept-encoding",
        "accept-language",
        "priority"
    ],
    "requestBody": "",
    "requestCookies": [
    ]
}
добавил в статью, чуть позже дам шаблон с примером сайта где это необходимо
 
  • Спасибо
Реакции: Roman*

heks

Client
Регистрация
01.10.2013
Сообщения
1 311
Благодарностей
361
Баллы
83
Упрощу сообществу задачу с которой сам мучался, пока не нашел примеры.
Теперь юзерагент передается в заголовках правильно.
В тело запроса requestBody как json нужно экранировать кавычки

C#:
{
    "tlsClientIdentifier": "chrome_133",
    "requestUrl": "https://tls.peet.ws/api/all",
    "requestMethod": "GET",
    "followRedirects": true,
    "insecureSkipVerify": false,
    "withoutCookieJar": false,
    "withDefaultCookieJar": false,
    "isByteRequest": false,
    "forceHttp1": false,
    "withDebug": true,
    "catchPanics": true,
    "withRandomTLSExtensionOrder": false,
    "timeoutSeconds": 30,
    "timeoutMilliseconds": 0,
    "sessionId": "my-custom-session-id",
    "proxyUrl": "",
    "isRotatingProxy": false,
    "certificatePinningHosts": {
    },
    "headers": {
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36",
        "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
        "accept-encoding": "gzip, deflate, br, zstd",
        "accept-language": "ru-RU,ru;q=0.9",
        "sec-ch-ua": "\"Chromium\";v=\"133\", \"Not:A-Brand\";v=\"24\", \"Google Chrome\";v=\"133\"",
        "sec-ch-ua-mobile": "?0",
        "sec-ch-ua-platform": "\"Windows\"",
        "sec-fetch-dest": "document",
        "sec-fetch-mode": "navigate",
        "sec-fetch-site": "none",
        "sec-fetch-user": "?1",
        "upgrade-insecure-requests": "1",
        "priority": "u=0, i"
    },
    "headerOrder": [
        "sec-ch-ua",
        "sec-ch-ua-mobile",
        "sec-ch-ua-platform",
        "upgrade-insecure-requests",
        "user-agent",
        "accept",
        "sec-fetch-site",
        "sec-fetch-mode",
        "sec-fetch-user",
        "sec-fetch-dest",
        "accept-encoding",
        "accept-language",
        "priority"
    ],
    "requestBody": "",
    "requestCookies": [
    ]
}
А куки передается так

C#:
    "requestCookies": [
        {
            "name": "foo2",
            "value": "bar2"
        },
        {
            "name": "bar2",
            "value": "baz2"
        }
    ]
что то ошибка идет на выполнения первого кода на C#
132091
 
  • Спасибо
Реакции: Dmitrybyapple

Dmitrymxc

Client
Регистрация
25.03.2025
Сообщения
11
Благодарностей
7
Баллы
3
  • Спасибо
Реакции: Dmitrybyapple

Dmitrymxc

Client
Регистрация
25.03.2025
Сообщения
11
Благодарностей
7
Баллы
3
Упрощу сообществу задачу с которой сам мучался, пока не нашел примеры.
Теперь юзерагент передается в заголовках правильно.
В тело запроса requestBody как json нужно экранировать кавычки


А куки передается так

C#:
    "requestCookies": [
        {
            "name": "foo2",
            "value": "bar2"
        },
        {
            "name": "bar2",
            "value": "baz2"
        }
    ]
Кстати это добавление Cookies, в целом куки поддерживаются автоматически если передать сессию
 
Последнее редактирование:
  • Спасибо
Реакции: Dmitrybyapple

heks

Client
Регистрация
01.10.2013
Сообщения
1 311
Благодарностей
361
Баллы
83
Все вроде пробил куки тоже сверху вышли. Вопрос как сделать что бы прокси использовались в формате login:pass@ip:port
попробовал в запрос вставить "proxyUrl": "http://kron:[email protected]:230", не работает
 
  • Спасибо
Реакции: Dmitrybyapple

Dmitrymxc

Client
Регистрация
25.03.2025
Сообщения
11
Благодарностей
7
Баллы
3
  • Спасибо
Реакции: Dmitrybyapple

heks

Client
Регистрация
01.10.2013
Сообщения
1 311
Благодарностей
361
Баллы
83

seodamage

Client
Регистрация
08.09.2014
Сообщения
232
Благодарностей
74
Баллы
28
спасибо, с запросами актуальная проблема, с меня голос за статью)
 
  • Спасибо
Реакции: Dmitrymxc

heks

Client
Регистрация
01.10.2013
Сообщения
1 311
Благодарностей
361
Баллы
83

Кто просматривает тему: (Всего: 2, Пользователи: 1, Гости: 1)