Здравствуйте, m2user, Вы писали:
M>Не знаю Мне самому интересно, список функций, приведенный по ссылке ниже, исчерпывающий или нет
Попробовал в фаерфоксе 115.3 — PAC перестает работать как будто не подключен. Предположу что падает на первой строке функции:
function FindProxyForURL(url, host) {
var xhr = new XMLHttpRequest();
return "PROXY localhost:80";
}
Для проверки, что PAC подключается, закомментировал первую строку и получил "The proxy server is refusing connections".
Re[10]: Запрос REST через сценарий автоматической настройки
Здравствуйте, Passerby, Вы писали: P>У меня не веб-сайт, а обычный домашний ПК. Итак, создаю новый проект, пишу HttpClient client=new(); Какой код дальше и куда помещать pac?
Туда, куда вы сможете построить URL.
Например, можете брать прямо с https://antizapret.prostovpn.org:8443/proxy.pac P>У меня NET 8.
class ProxyTest
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] args)
{
Stream RequestStream = null;
string DestinationUrl = "http://www.google.com";
string PacUri = "http://127.0.0.1/proxy.pac1"; // вот здесь указываете URL к вашему PAC-файлу
// Create test request
WebRequest TestRequest = WebRequest.Create ( DestinationUrl );
// Optain Proxy address for the URL string ProxyAddresForUrl = Proxy.GetProxyForUrlUsingPac ( DestinationUrl, PacUri );
if ( ProxyAddresForUrl != null ){
Console.WriteLine ("Found Proxy: {0}", ProxyAddresForUrl );
TestRequest.Proxy = new WebProxy ( ProxyAddresForUrl ) ; // вот как автор предлагает устанавливать проксю для данного запроса
}else{
Console.WriteLine ( "Proxy Not Found. Send request directly." );
}
try {
WebResponse TestResponse = TestRequest.GetResponse();
Console.WriteLine ( "Request was successful" );
}catch ( Exception ex ){
Console.WriteLine ( "Error: {0}", ex.Message );
}finally{
if ( RequestStream != null ){
RequestStream.Close();
}
}
Console.ReadLine();
}
}
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Запрос REST через сценарий автоматической настройки
В настройках прокси есть пункт "Использовать сценарий автоматической настройки". В частности популярна запись в этом поле https://antizapret.prostovpn.org:8443/proxy.pac. А можно ли делать запросы REST?, если используется такая настройка?
Re: Запрос REST через сценарий автоматической настройки
Здравствуйте, Passerby, Вы писали:
P>В настройках прокси есть пункт "Использовать сценарий автоматической настройки". В частности популярна запись в этом поле https://antizapret.prostovpn.org:8443/proxy.pac. А можно ли делать запросы REST?, если используется такая настройка? Или, может, можно получить прокси из этого pac файла?
Re[3]: Запрос REST через сценарий автоматической настройки
Нет. Я хочу из программы на C# делать REST запросы, через https://antizapret.prostovpn.org:8443/proxy.pac Можно, конечно, самому собрать массив бесплатных прокси и менять их в цикле, пока не попадется работающий, но, имхо, в этом PAC собраны лучшие бесплатные, работающие на хорошей скорости.
Re[6]: Запрос REST через сценарий автоматической настройки
P>Нет. Я хочу из программы на C# делать REST запросы, через https://antizapret.prostovpn.org:8443/proxy.pac Можно, конечно, самому собрать массив бесплатных прокси и менять их в цикле, пока не попадется работающий, но, имхо, в этом PAC собраны лучшие бесплатные, работающие на хорошей скорости.
Если же речь именно о https://antizapret.prostovpn.org:8443/proxy.pac, то судя по коду там всего три прокси
HTTPS f.thenewone.lol:3145
HTTPS s.thenewone.lol:3145
PROXY n.thenewone.lol:29976
А все остальное это логика по определению заблокированных URL.
Ну и учитывай warning в коде про последние две прокси:
// WARNING! WARNING! WARNING!
// You should NOT use these proxy servers outside of PAC file!
// DO NOT enter it manually in any program!
// By doing this, you harm the service!
Re[7]: Запрос REST через сценарий автоматической настройки
Здравствуйте, m2user, Вы писали: M>Чем не устраивает решение через WinHttp.dll, которое давали в комментариях ранее?
написал сразу после ссылки. M>Если же речь именно о https://antizapret.prostovpn.org:8443/proxy.pac, то судя по коду там всего три прокси M>HTTPS f.thenewone.lol:3145 M>HTTPS s.thenewone.lol:3145 M>PROXY n.thenewone.lol:29976
f.thenewone.lol:3145 напрямую ни с инстаграммом, ни с фейсбуком не работает. Но URL автоматической настройки прокси с ними работает. Похоже, прокси определяет откуда пришел запрос: с файла pac или напрямую. Третий с rutracker.org работает, с другими не пробовал.
M>Ну и учитывай warning в коде про последние две прокси: M>
M> // WARNING! WARNING! WARNING!
M> // You should NOT use these proxy servers outside of PAC file!
M> // DO NOT enter it manually in any program!
M> // By doing this, you harm the service!
M>
Вероятно, связано с тем, что твиттер, инстаграм, фейсбук и еще некоторые сайты подключают строго через f.thenewone.lol:3145 (хотя у меня не получилось).
Так что, если у тебя .NET более ранней версии, то ты сможешь использовать только HTTP проксю (PROXY n.thenewone.lol:29976).
P>f.thenewone.lol:3145 напрямую ни с инстаграммом, ни с фейсбуком не работает. Но URL автоматической настройки прокси с ними работает. Похоже, прокси определяет откуда пришел запрос: с файла pac или напрямую. Третий с rutracker.org работает, с другими не пробовал.
Нет, прокся такого узнать не может, а вот запросы она может обслуживать не все.
PAC сценарий возвращает разные прокси для разных url, и, как видно из кода PAC для инстаграмма и FB возвращается как раз f.thenewone.lol:3145.
Дело скорее всего в способе, каким ты тестируешь проксю.
Если через веб-браузер, то учитывай, что mozilla firefox HTTPS проксю поддерживает только через PAC сценарий.
Рабочий пример настройки я приводил тут https://rsdn.org/forum/life/8727230.1
Для Google Chrome с HTTPS проксей работает SwitchyOmega extension например.
Последняя прокся из списка (PROXY n.thenewone.lol:29976) это обычная HTTP прокся, поэтому веб-браузер умеет работать с ней через обычные настройки, но twitter, FB и инстаграмм это сервер не обслуживает.
Здравствуйте, m2user, Вы писали: M>Да, я видел, но в чём именно затруднение не из твоего комментария не ясно..
"Чтобы запустить приложение, вам необходимо поместить файл proxy.pac в домашний каталог веб-сайта по умолчанию. Обычно это каталог c:\inetpub\wwwroot ."
У меня не веб-сайт, а обычный домашний ПК. Итак, создаю новый проект, пишу HttpClient client=new(); Какой код дальше и куда помещать pac?
M>На самом деле тут есть проблема: две из трех проксей, которые возвращает обсуждаемый PAC сценарий, это HTTPS прокси. M>А поддержка HTTPS прокси появилась только в .NET 8 (если не считать неоф. поддержки в .net core 2.1). M>См. https://github.com/dotnet/core/issues/8437#issuecomment-1624217579 M>https://github.com/dotnet/runtime/issues/31113
M>Так что, если у тебя .NET более ранней версии, то ты сможешь использовать только HTTP проксю (PROXY n.thenewone.lol:29976).
У меня NET 8.
M>Дело скорее всего в способе, каким ты тестируешь проксю. M>Если через веб-браузер, то учитывай, что mozilla firefox HTTPS проксю поддерживает только через PAC сценарий.
У меня платный Https прокси. Firefox без проблем поддерживает. Галочка в http снята и поля, соответствующие http, пустые.
Re[11]: Запрос REST через сценарий автоматической настройки
Здравствуйте, Sinclair, Вы писали: S> string ProxyAddresForUrl = Proxy.GetProxyForUrlUsingPac ( DestinationUrl, PacUri );
В каком nuget определен класс Proxy? В winhttp.dll его нет. Или у меня VS глючит: добавил эту библиотеку, но Proxy нет.
Re[12]: Запрос REST через сценарий автоматической настройки
Здравствуйте, Passerby, Вы писали:
P>В каком nuget определен класс Proxy? В winhttp.dll его нет. Или у меня VS глючит: добавил эту библиотеку, но Proxy нет.
Ты сам его определяешь, запихнув в него то, на что я тебе ссылку давал. Там же написано:
The main function that returns the proxy for a specific URL is GetProxyForUrlUsingPac that is defined in the Proxy class:
Здравствуйте, Passerby, Вы писали: P>Здравствуйте, Sinclair, Вы писали: S>> string ProxyAddresForUrl = Proxy.GetProxyForUrlUsingPac ( DestinationUrl, PacUri ); P>В каком nuget определен класс Proxy?
Ни в каком. Вы код скачали?
Там лежит файл