요청은 프록시 핸들러로 만든 HttpClient를 사용해야 합니다. 관련 없는 WebProxy 객체를 생성해도 다른 클라이언트의 경로는 바뀌지 않습니다.

using System;
using System.Net;
using System.Net.Http;

var proxy = new WebProxy("http://203.0.113.10:8080")
{
    BypassProxyOnLocal = false
};

using var handler = new HttpClientHandler
{
    Proxy = proxy,
    UseProxy = true
};

using var client = new HttpClient(handler)
{
    Timeout = TimeSpan.FromSeconds(15)
};

using var response = await client.GetAsync("https://example.com/");
Console.WriteLine((int)response.StatusCode);
Console.WriteLine(await response.Content.ReadAsStringAsync());

문서용 주소를 서비스에서 제공한 실제 HTTP 프록시 또는 HTTP 프록시 목록의 후보로 바꾸세요. 이 최상위 구문은 최신 C# 콘솔 프로젝트에 맞습니다. 오래된 프로젝트는 비동기 Main에 문장을 넣을 수 있습니다.

핸들러의 두 속성을 모두 확인하세요. Proxy는 엔드포인트를 선택하고 UseProxy=true는 사용을 활성화합니다. 엔드포인트가 별도로는 작동하지만 앱에서는 안 된다면 UseProxy를 끄는 코드가 없는지, 호출이 이 인스턴스를 사용하는지 확인하세요. 전용 핸들러는 프로세스나 OS의 검색에 의존하지 않게 합니다.

프록시 운영자가 계정을 제공하면 NetworkCredential을 WebProxy.Credentials 속성에 할당하세요. 웹사이트 Authorization은 다른 구간용이며 공개 IP:port 항목에는 기본 로그인 정보가 없습니다. http:// 리스너는 터널로 HTTPS를 운반할 수 있습니다. 일반적인 목적지 검증을 유지하세요.

이 짧은 프로그램은 종료할 때 객체를 해제합니다. 반복적인 서비스 호출에서는 .NET 클라이언트 수명 지침을 따르고 요청마다 연결 풀을 다시 만들지 말고 작업에 맞춰 클라이언트와 핸들러를 유지하세요. 반환 상태도 확인하세요. 프록시 경로가 정상이어도 웹사이트의 거절 응답은 전달될 수 있습니다.

관련 글