URL-адреса прокси-сервера имеют формат http:/ /auser:apassword@domain:port, так как каждый прокси в моем списке прокси имеет разные URL-адреса, поскольку у них разные пользователи и пароли.
Я пытался использовать их через простой запрос cURL, и до сих пор они работают нормально. cURL что-то вроде
Код: Выделить всё
curl --proxy "http://auser:apassword@domain:port" "https://www.whateverwebsite.com" -k
Код: Выделить всё
private static IServiceCollection SetupProxy(IServiceCollection serviceCollection, IConfiguration configuration)
{
serviceCollection.AddHttpClient((serviceProvider, client) =>
{
client.BaseAddress = new Uri(@"www.whateverwebsite.com/");
})
.ConfigurePrimaryHttpMessageHandler(serviceProvider =>
{
var uri = new Uri(@"http://auser:apassword@domain:port");
return new HttpClientHandler
{
Proxy = new WebProxy(uri),
UseProxy = true,
UseDefaultCredentials = true, //I have tried with and without this
AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate | DecompressionMethods.Brotli
};
});
serviceCollection.AddScoped(s => new LocalMyScraper(s.GetService()));
return serviceCollection;
}
Я знаю, что это может быть связано с самим прокси-сервером, но я не знаю, есть ли какая-то другая настройка, которую мне нужно сделать в .NET. , или что-то, что отправляет .NET, о чем я не знаю, поскольку странно, что запрос cURL работает, а в C# нет.
Я тоже пытался сделать то же самое с GO и работает отлично. Значит, это должно быть что-то связанное с .NET.
Для получения дополнительной информации я использую .NET 6.
РЕДАКТИРОВАНИЕ: Я также пытался добавить учетные данные прокси-сервера в прокси-объект, например:
Код: Выделить всё
public class MyWebProxy : IWebProxy
{
//...
public Uri GetProxy(Uri destination)
{
var proxy = _proxyService.getProxy();
if (!string.IsNullOrEmpty(proxy.Login) && !string.IsNullOrEmpty(proxy.Password))
Credentials = new NetworkCredential(proxy.Login, proxy.Password);
var url = @$"{host}:{port}";
var uri = new Uri(url);
return uri;
}
}
Подробнее здесь: https://stackoverflow.com/questions/789 ... with-net-6
Мобильная версия