如何在C#中使用代理示例
using System;
using System.Net;
using System.IO;
class Program
{
static void Main()
{
string api = ""; // 这里填写你购买后生成的API网址,如果没有或者不会,请找客服 如:http://www.soyunip.com/api?ddbh=s8349453653
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(api);
request.Method = "GET";
request.Timeout = 10000; // 超时设置为10秒
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
if (response.StatusCode != HttpStatusCode.OK)
{
throw new Exception("Failed to get IP address: HTTP error code : " + (int)response.StatusCode);
}
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
string ip = reader.ReadToEnd().Trim(); // 返回的内容如:125.26.21.154:13456
// 如果返回是多行多个代理信息的,需要解析一下
string[] ips = ip.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); // 这里返回多行多个代理IP,默认是以\r\n分隔符的
if (ips.Length == 0 || string.IsNullOrEmpty(ips[0]))
{
throw new Exception("No valid IP address found in response");
}
string myip = ips[0]; // 这里取第一个代理IP 实际应用时,根据需要自己选择
// 代理服务器
string ipport = $"http://{myip}";
// 下面举例是你要访问的网站链接
string url = "http://myip.ipip.net";
WebRequest targetRequest = WebRequest.Create(url);
targetRequest.Proxy = new WebProxy(ipport);
using (HttpWebResponse targetResponse = (HttpWebResponse)targetRequest.GetResponse())
{
if (targetResponse.StatusCode != HttpStatusCode.OK)
{
throw new Exception("Failed to fetch data from target site: HTTP error code : " + (int)targetResponse.StatusCode);
}
using (Stream targetStream = targetResponse.GetResponseStream())
using (StreamReader targetReader = new StreamReader(targetStream))
{
string result = targetReader.ReadToEnd();
Console.WriteLine(result); // 打印返回的内容
}
}
}
}
}
catch (Exception ex)
{
Console.Error.WriteLine("An error occurred: " + ex.Message);
}
}
}