Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
1 / 1 / 1
Регистрация: 14.04.2024
Сообщений: 175

Запрос сайта не через прокси, а через скрипт антизапрет

05.06.2024, 04:02. Показов 3117. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть сайт, который работает через прокси и через антизапрет, т.е. когда в URL автоматической настройки прокси прописано https://p.thenewone.lol:8443/proxy.pac Можно ли как-то его запросить HttpClient через антизапрет? Может, в коде что прописать или в файле App.config?
Простое стандартное указание WebProxy в этом случае не работает:
C#
1
2
3
4
5
6
7
8
9
10
11
string proxyURL = "https://p.thenewone.lol:8443/proxy.pac"
WebProxy webProxy = new WebProxy
{
    Address = new Uri(proxyURL),   
    Credentials = new NetworkCredential( )
};
HttpClientHandler httpClientHandler = new HttpClientHandler
{
    Proxy = webProxy
};
HttpClient client = new HttpClient(httpClientHandler);
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.06.2024, 04:02
Ответы с готовыми решениями:

Парсинг сайта через прокси
Здравствуйте! Купил прокси и не могу через них подключиться. import requests from requests.auth import HTTPProxyAuth headers...

Пинг сайта через прокси
У меня такая задача: нужно проверить жив ли сайт. Пинговать хочу используя класс Ping. А вот как быть с тем, что у меня инет через прокси?...

Загрузка сайта через прокси
Нужно написать программу меняющую прокси сервера (т.к написаныые другими людьми программы мне не подходят) Как можно организовать коннект...

4
1 / 1 / 1
Регистрация: 14.04.2024
Сообщений: 175
17.06.2024, 20:11  [ТС]
Не могли бы рассказать, как вообще работает URL автоматической настройки прокси? Если бы браузер обращался по адресу, указанному в первом сообщении, его бы заблокировал РКН. А с другой стороны как иначе получить файл pac?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18240 / 14154 / 5366
Регистрация: 17.03.2014
Сообщений: 28,841
Записей в блоге: 1
17.06.2024, 20:53
Лучший ответ Сообщение было отмечено AndreyAndreyA как решение

Решение

Цитата Сообщение от AndreyAndreyA Посмотреть сообщение
Если бы браузер обращался по адресу, указанному в первом сообщении, его бы заблокировал РКН.
Почему вы так считаете? Пробовали в браузере открыть ссылку на PAC файл?

Цитата Сообщение от AndreyAndreyA Посмотреть сообщение
как вообще работает URL автоматической настройки прокси?
https://en.wikipedia.org/wiki/Proxy_auto-config

Добавлено через 12 минут
Цитата Сообщение от AndreyAndreyA Посмотреть сообщение
Простое стандартное указание WebProxy в этом случае не работает
Не удивительно. В свойстве webProxy указывается адрес прокси, а не адрес PAC файла, который содержит код на JavaScript для выбора прокси. Чтобы подружить .NET c PAC необходимо вызвать функцию FindProxyForURL из PAC файла. Интересная задача кстати.

Есть, кстати, решение через Windows API: Using PAC files proxy. Возможно оно вам подойдет.
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public static string GetProxyForUrlUsingPac ( string DestinationUrl, string PacUri ){
 
     IntPtr WinHttpSession = Win32Api.WinHttpOpen("User",
                                    Win32Api.WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, 
                                    IntPtr.Zero, 
                                    IntPtr.Zero, 
                                    0);
 
     Win32Api.WINHTTP_AUTOPROXY_OPTIONS  ProxyOptions = 
              new Win32Api.WINHTTP_AUTOPROXY_OPTIONS();
     Win32Api.WINHTTP_PROXY_INFO ProxyInfo = 
                     new Win32Api.WINHTTP_PROXY_INFO(); 
            
     ProxyOptions.dwFlags           = Win32Api.WINHTTP_AUTOPROXY_CONFIG_URL;
     ProxyOptions.dwAutoDetectFlags = (Win32Api.WINHTTP_AUTO_DETECT_TYPE_DHCP |
                                       Win32Api.WINHTTP_AUTO_DETECT_TYPE_DNS_A);
     ProxyOptions.lpszAutoConfigUrl = PacUri;
            
     // Get Proxy 
     bool IsSuccess = Win32Api.WinHttpGetProxyForUrl( WinHttpSession, 
                                                      DestinationUrl,
                                                      ref ProxyOptions,
                                                      ref ProxyInfo );
            
     Win32Api.WinHttpCloseHandle(WinHttpSession);
 
     if ( IsSuccess ){
         return ProxyInfo.lpszProxy;
     }else {
         Console.WriteLine("Error: {0}", Win32Api.GetLastError() );
         return null;
     }
}
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/// <summary>
/// This function implements the Web Proxy Auto-Discovery (WPAD) protocol
/// for automatically configuring the proxy settings for an HTTP request.
/// The WPAD protocol downloads a Proxy Auto-Configuration (PAC) file,
/// which is a script that identifies the proxy server to use for a given
/// target URL. PAC files are typically deployed by the IT department within
/// a corporate network environment. The URL of the PAC file can either be
/// specified explicitly or WinHttpGetProxyForUrl can be instructed to
/// automatically discover the location of the PAC file on the local network.
/// </summary>
/// <param name="hSession">The WinHTTP session handle
///         returned by the WinHttpOpen function</param>
/// <param name="lpcwszUrl">A pointer
/// to a null-terminated Unicode string that contains the
/// URL of the HTTP request that the application is preparing to send.</param>
/// <param name="pAutoProxyOptions">A pointer
/// to a WINHTTP_AUTOPROXY_OPTIONS structure that
/// specifies the auto-proxy options to use.</param>
/// <param name="pProxyInfo">A pointer
/// to a WINHTTP_PROXY_INFO structure that receives the
/// proxy setting. This structure is then applied to the request handle using the
/// WINHTTP_OPTION_PROXY option.</param>
/// <returns></returns>
[DllImport("winhttp.dll", SetLastError=true, CharSet=CharSet.Unicode)]
public static extern bool WinHttpGetProxyForUrl(
            IntPtr hSession,
            string lpcwszUrl,
            ref WINHTTP_AUTOPROXY_OPTIONS pAutoProxyOptions,
            ref WINHTTP_PROXY_INFO pProxyInfo);
 
/// <summary>
/// The function initializes, for an application, the use of WinHTTP
/// functions and returns a WinHTTP-session handle
/// </summary>
/// <param name="pwszUserAgent">A pointer
/// to a string variable that contains the name of the
/// application or entity calling the WinHTTP functions.</param>
/// <param name="dwAccessType">Type of access required.
///     This can be one of the following values</param>
/// <param name="pwszProxyName"> A pointer
/// to a string variable that contains the name of the
/// proxy server to use when proxy access
/// is specified by setting dwAccessType to
/// WINHTTP_ACCESS_TYPE_NAMED_PROXY. The WinHTTP functions
/// recognize only CERN type proxies for HTTP.
/// If dwAccessType is not set to WINHTTP_ACCESS_TYPE_NAMED_PROXY,
/// this parameter must be set
/// to WINHTTP_NO_PROXY_NAME</param>
/// <param name="pwszProxyBypass">A pointer
/// to a string variable that contains an optional list
/// of host names or IP addresses, or both,
/// that should not be routed through the proxy when
/// dwAccessType is set to WINHTTP_ACCESS_TYPE_NAMED_PROXY.
/// The list can contain wildcard characters.
/// Do not use an empty string, because
/// the WinHttpOpen function uses it as the proxy bypass list.
/// If this parameter specifies the "<local>" macro
/// as the only entry, this function bypasses
/// any host name that does not contain a period.
/// If dwAccessType is not set to WINHTTP_ACCESS_TYPE_NAMED_PROXY,
/// this parameter must be set to WINHTTP_NO_PROXY_BYPASS.</param>
/// <param name="dwFlags">Unsigned long integer value
/// that contains the flags that indicate various options
/// affecting the behavior of this function</param>
/// <returns>Returns a valid session handle
///    if successful, or NULL otherwise</returns>
[DllImport("winhttp.dll", SetLastError=true, CharSet=CharSet.Unicode)]
public static extern IntPtr WinHttpOpen(
            string pwszUserAgent,
            int dwAccessType,
            IntPtr pwszProxyName,
            IntPtr pwszProxyBypass,
            int dwFlags
            );
 
/// <summary>
/// The function closes a single HINTERNET handle
/// </summary>
/// <param name="hInternet">Valid HINTERNET handle to be closed.</param>
/// <returns>Returns TRUE if the handle
///    is successfully closed, or FALSE otherwise</returns>
[DllImport("winhttp.dll", SetLastError=true, CharSet=CharSet.Unicode)]
public static extern bool WinHttpCloseHandle(IntPtr hInternet);
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class MyPacScriptProxy : IWebProxy
{
    protected string PacScriptUrl;
 
    public MyPacScriptProxy(string url)
    {
        PacScriptUrl = url;
    }
 
    public ICredentials Credentials { get; set; }
 
    public Uri GetProxy(Uri dest)
    {
        // you can return your GetProxyFromPac(dest, PacScriptUrl); result here
 
        if (dest.Host.EndsWith(".net")) {
            return null; // bypass proxy for .net websites
        }
 
        return new Uri("http://localhost:8888");
    }
 
    public bool IsBypassed(Uri host)
    {
        return false;
    }
}
1
1 / 1 / 1
Регистрация: 14.04.2024
Сообщений: 175
17.06.2024, 21:25  [ТС]
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Почему вы так считаете?
Так все прокси блокируют, заблокировали все сайты, относящиеся к этой ссылке (http://antizapret.prostovpn.org https://antizapret.prostovpn.org http://www.antizapret.prostovpn.org https://www.antizapret.prostovpn.org) а доступ к самой ссылке, которой пользуются для обхода блокировок РКН, к счастью, не могут заблокировать. Какая техническая причина может не позволить заблокировать?
Цитата Сообщение от OwenGlendower Посмотреть сообщение
решение через Windows API
Попробую.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18240 / 14154 / 5366
Регистрация: 17.03.2014
Сообщений: 28,841
Записей в блоге: 1
17.06.2024, 21:51
Цитата Сообщение от AndreyAndreyA Посмотреть сообщение
Какая техническая причина может не позволить заблокировать?
Не знаю. Сомневаюсь что дело в технической причине.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.06.2024, 21:51
Помогаю со студенческими работами здесь

Запрос на сайт через прокси
Есть функция которая делает запрос на сайт, подскажите как сделать что бы через прокси было public static Uri WebUri = new...

Запрос HttpWebRequest через прокси
Всем привет. Делаю запрос проходящий через прокси. Делаю вот так: HttpWebRequest request =...

Ajax запрос через прокси!
Всем доброго времени суток! На сайте использую скрипт, который выполняет Ajax запрос вида: result =...

Пингование сайта через прокси-сервер
Добрый день народ! Вопрос следующий: какой командой можно узнать, есть или нет с сайтом ya.ru связь, если интернет идет через прокси...

Post запрос через список прокси
Необходимо реализовать post запрос через список проксей ( во внешнем файлике лежат). Сам post запрос отправить смогу. а вот как через...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru