Прокси работает над запросом cURL, но выдает 407 с .NET 6C#

Место общения программистов C#
Ответить
Anonymous
 Прокси работает над запросом cURL, но выдает 407 с .NET 6

Сообщение Anonymous »

Я пытаюсь установить прокси-сервер для определенного личного проекта, но до сих пор мне это не удалось.
URL-адреса прокси-сервера имеют формат http:/ /auser:apassword@domain:port, так как каждый прокси в моем списке прокси имеет разные URL-адреса, поскольку у них разные пользователи и пароли.
Я пытался использовать их через простой запрос cURL, и до сих пор они работают нормально. cURL что-то вроде

Код: Выделить всё

curl --proxy "http://auser:apassword@domain:port" "https://www.whateverwebsite.com" -k
Но установить его в .NET 6 пока невозможно, поскольку он выдает только ошибку 407. Настройка примерно такая:

Код: Выделить всё

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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»