c#换ip代理源码(不知道能用不能,先收藏了)

很多朋友都想如何提高自己的网站流量,可是都没有什么好的办法  
经过很长时间的研究,在C#中实现了,当然了,这部分代码其中一部分是网上的,不是原创。  
 
using System;  
using System.Drawing;  
using System.Collections;  
using System.ComponentModel;  
using System.Windows.Forms;  
using System.Data;  
using System.Runtime.InteropServices;  
using System.Diagnostics;  
using System.IO;  
using System.Text.RegularExpressions;  
using System.Text;  
using System.Net;  
namespace WebSock  
{  
 /// <summary>  
 /// Form1 的摘要说明。  
 /// </summary>  
 public class Form1 : System.Windows.Forms.Form  
 {  
  private System.Windows.Forms.GroupBox groupBox1;  
  private AxSHDocVw.AxWebBrowser axWebBrowser1;  
  private System.Windows.Forms.Button button1;  
  private System.Windows.Forms.Button button2;  
  private System.Windows.Forms.OpenFileDialog openFileDialog1;  
  private System.Windows.Forms.Timer timer1;  
  private System.ComponentModel.IContainer components;  
  private System.Windows.Forms.StatusBar statusBar1;  
  private System.Windows.Forms.StatusBarPanel statusBarPanel1;  
  private System.Windows.Forms.GroupBox groupBox2;  
  private System.Windows.Forms.GroupBox groupBox3;  
  private System.Windows.Forms.GroupBox groupBox4;  
  private System.Windows.Forms.Button button3;  
  ArrayList arrText = new ArrayList();  
  int Total = 0;  
  int i,k=0;  
  private System.Windows.Forms.GroupBox groupBox5;  
  private System.Windows.Forms.Label label1;  
  private System.Windows.Forms.TextBox txtWebUrl;  
  private const string TitleInfo = "程序制作红色银狐";  
  private System.Windows.Forms.ListBox listBox1;  
  private string strUrl = "";  
  public Form1()  
  {  
   //  
   // Windows 窗体设计器支持所必需的  
   //  
   InitializeComponent();  
   //  
   // TODO: 在 InitializeComponent 调用后添加任何构造函数代码  
   //  
  }  
 
  /// <summary>  
  /// 清理所有正在使用的资源。  
  /// </summary>  
  protected override void Dispose( bool disposing )  
  {  
   if( disposing )  
   {  
    if (components != null)   
    {  
     components.Dispose();  
    }  
   }  
   base.Dispose( disposing );  
  } 
 
  #region Windows 窗体设计器生成的代码  
  /// <summary>  
  /// 设计器支持所需的方法 - 不要使用代码编辑器修改  
  /// 此方法的内容。  
  /// </summary>  
  private void InitializeComponent()  
  {  
   this.components = new System.ComponentModel.Container();  
   System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(Form1));  
   this.groupBox1 = new System.Windows.Forms.GroupBox();  
   this.groupBox3 = new System.Windows.Forms.GroupBox();  
   this.axWebBrowser1 = new AxSHDocVw.AxWebBrowser();  
   this.groupBox2 = new System.Windows.Forms.GroupBox();  
   this.listBox1 = new System.Windows.Forms.ListBox();  
   this.button1 = new System.Windows.Forms.Button();  
   this.button2 = new System.Windows.Forms.Button();  
   this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();  
   this.timer1 = new System.Windows.Forms.Timer(this.components);  
   this.statusBar1 = new System.Windows.Forms.StatusBar();  
   this.statusBarPanel1 = new System.Windows.Forms.StatusBarPanel();  
   this.groupBox4 = new System.Windows.Forms.GroupBox();  
   this.button3 = new System.Windows.Forms.Button();  
   this.groupBox5 = new System.Windows.Forms.GroupBox();  
   this.label1 = new System.Windows.Forms.Label();  
   this.txtWebUrl = new System.Windows.Forms.TextBox();  
   this.groupBox1.SuspendLayout();  
   this.groupBox3.SuspendLayout();  
   ((System.ComponentModel.ISupportInitialize)(this.axWebBrowser1)).BeginInit();  
   this.groupBox2.SuspendLayout();  
   ((System.ComponentModel.ISupportInitialize)(this.statusBarPanel1)).BeginInit();  
   this.groupBox4.SuspendLayout();  
   this.groupBox5.SuspendLayout();  
   this.SuspendLayout();  
   //   
   // groupBox1  
   //   
   this.groupBox1.Controls.Add(this.groupBox3);  
   this.groupBox1.Controls.Add(this.groupBox2);  
   this.groupBox1.Location = new System.Drawing.Point(0, 0);  
   this.groupBox1.Name = "groupBox1";  
   this.groupBox1.Size = new System.Drawing.Size(810, 440);  
   this.groupBox1.TabIndex = 0;  
   this.groupBox1.TabStop = false;  
   //   
   // groupBox3  
   //   
   this.groupBox3.Controls.Add(this.axWebBrowser1);  
   this.groupBox3.Location = new System.Drawing.Point(312, 8);  
   this.groupBox3.Name = "groupBox3";  
   this.groupBox3.Size = new System.Drawing.Size(490, 424);  
   this.groupBox3.TabIndex = 2;  
   this.groupBox3.TabStop = false;  
   this.groupBox3.Text = "浏览器";  
   //   
   // axWebBrowser1  
   //   
   this.axWebBrowser1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)   
    | System.Windows.Forms.AnchorStyles.Left)   
    | System.Windows.Forms.AnchorStyles.Right)));  
   this.axWebBrowser1.ContainingControl = this;  
   this.axWebBrowser1.Enabled = true;  
   this.axWebBrowser1.Location = new System.Drawing.Point(8, 16);  
   this.axWebBrowser1.OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("axWebBrowser1.OcxState")));  
   this.axWebBrowser1.Size = new System.Drawing.Size(474, 400);  
   this.axWebBrowser1.TabIndex = 0;  
   //   
   // groupBox2  
   //   
   this.groupBox2.Controls.Add(this.listBox1);  
   this.groupBox2.Location = new System.Drawing.Point(8, 8);  
   this.groupBox2.Name = "groupBox2";  
   this.groupBox2.Size = new System.Drawing.Size(296, 424);  
   this.groupBox2.TabIndex = 1;  
   this.groupBox2.TabStop = false;  
   this.groupBox2.Text = "代理IP地址";  
   //   
   // listBox1  
   //   
   this.listBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;  
   this.listBox1.ItemHeight = 12;  
   this.listBox1.Location = new System.Drawing.Point(8, 16);  
   this.listBox1.Name = "listBox1";  
   this.listBox1.Size = new System.Drawing.Size(280, 398);  
   this.listBox1.TabIndex = 2;  
   //   
   // button1  
   //   
   this.button1.Location = new System.Drawing.Point(310, 16);  
   this.button1.Name = "button1";  
   this.button1.Size = new System.Drawing.Size(176, 32);  
   this.button1.TabIndex = 1;  
   this.button1.Text = "载入代理IP";  
   this.button1.Click += new System.EventHandler(this.button1_Click_1);  
   //   
   // button2  
   //   
   this.button2.Location = new System.Drawing.Point(486, 16);  
   this.button2.Name = "button2";  
   this.button2.Size = new System.Drawing.Size(176, 32);  
   this.button2.TabIndex = 2;  
   this.button2.Text = "开始刷流量";  
   this.button2.Click += new System.EventHandler(this.button2_Click);  
   //   
   // timer1  
   //   
   this.timer1.Interval = 10000;  
   this.timer1.Tick += new System.EventHandler(this.timer1_Tick);  
   //   
   // statusBar1  
   //   
   this.statusBar1.Dock = System.Windows.Forms.DockStyle.None;  
   this.statusBar1.Location = new System.Drawing.Point(0, 552);  
   this.statusBar1.Name = "statusBar1";  
   this.statusBar1.Panels.AddRange(new System.Windows.Forms.StatusBarPanel[] {  
                        this.statusBarPanel1});  
   this.statusBar1.ShowPanels = true;  
   this.statusBar1.Size = new System.Drawing.Size(810, 24);  
   this.statusBar1.TabIndex = 3;  
   //   
   // statusBarPanel1  
   //   
   this.statusBarPanel1.Width = 820;  
   //   
   // groupBox4  
   //   
   this.groupBox4.Controls.Add(this.button3);  
   this.groupBox4.Controls.Add(this.button2);  
   this.groupBox4.Controls.Add(this.button1);  
   this.groupBox4.Location = new System.Drawing.Point(0, 496);  
   this.groupBox4.Name = "groupBox4";  
   this.groupBox4.Size = new System.Drawing.Size(810, 56);  
   this.groupBox4.TabIndex = 4;  
   this.groupBox4.TabStop = false;  
   this.groupBox4.Text = "操作区";  
   //   
   // button3  
   //   
   this.button3.Location = new System.Drawing.Point(134, 16);  
   this.button3.Name = "button3";  
   this.button3.Size = new System.Drawing.Size(176, 32);  
   this.button3.TabIndex = 3;  
   this.button3.Text = "从网络获取代理IP";  
   this.button3.Click += new System.EventHandler(this.button3_Click);  
   //   
   // groupBox5  
   //   
   this.groupBox5.Controls.Add(this.label1);  
   this.groupBox5.Controls.Add(this.txtWebUrl);  
   this.groupBox5.Location = new System.Drawing.Point(0, 444);  
   this.groupBox5.Name = "groupBox5";  
   this.groupBox5.Size = new System.Drawing.Size(810, 48);  
   this.groupBox5.TabIndex = 5;  
   this.groupBox5.TabStop = false;  
   this.groupBox5.Text = "要刷网站地址";  
   //   
   // label1  
   //   
   this.label1.Location = new System.Drawing.Point(16, 21);  
   this.label1.Name = "label1";  
   this.label1.Size = new System.Drawing.Size(56, 16);  
   this.label1.TabIndex = 1;  
   this.label1.Text = "网站地址";  
   //   
   // txtWebUrl  
   //   
   this.txtWebUrl.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;  
   this.txtWebUrl.Location = new System.Drawing.Point(80, 16);  
   this.txtWebUrl.Name = "txtWebUrl";  
   this.txtWebUrl.Size = new System.Drawing.Size(720, 21);  
   this.txtWebUrl.TabIndex = 0;  
   this.txtWebUrl.Text = "http://www.51solve.com/";  
   //   
   // Form1  
   //   
   this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);  
   this.ClientSize = new System.Drawing.Size(810, 575);  
   this.Controls.Add(this.groupBox5);  
   this.Controls.Add(this.groupBox4);  
   this.Controls.Add(this.statusBar1);  
   this.Controls.Add(this.groupBox1);  
   this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;  
   this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));  
   this.MaximizeBox = false;  
   this.Name = "Form1";  
   this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;  
   this.Text = "网站流量访问程序制作:红色银狐";  
   this.groupBox1.ResumeLayout(false);  
   this.groupBox3.ResumeLayout(false);  
   ((System.ComponentModel.ISupportInitialize)(this.axWebBrowser1)).EndInit();  
   this.groupBox2.ResumeLayout(false);  
   ((System.ComponentModel.ISupportInitialize)(this.statusBarPanel1)).EndInit();  
   this.groupBox4.ResumeLayout(false);  
   this.groupBox5.ResumeLayout(false);  
   this.ResumeLayout(false);  
 
  } 
  #endregion  
 
  /// <summary>  
  /// 应用程序的主入口点。  
  /// </summary>  
  [STAThread]  
  static void Main()   
  {  
   Application.Run(new Form1());  
  }  
  //定义结构体代理信息  
  public struct Struct_INTERNET_PROXY_INFO   
  {   
   public int dwAccessType;   
   public IntPtr proxy;   
   public IntPtr proxyBypass;   
  };   
  [DllImport("wininet.dll", SetLastError = true)]   
  private static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer, int lpdwBufferLength);  
 
  private void RefreshIESettings(string strProxy)   
  {   
   const int INTERNET_OPTION_PROXY = 38;   
   const int INTERNET_OPEN_TYPE_PROXY = 3;   
 
   Struct_INTERNET_PROXY_INFO struct_IPI;   
 
   // Filling in structure   
   struct_IPI.dwAccessType = INTERNET_OPEN_TYPE_PROXY;   
   struct_IPI.proxy = Marshal.StringToHGlobalAnsi(strProxy);   
   struct_IPI.proxyBypass = Marshal.StringToHGlobalAnsi("local");   
 
   // Allocating memory   
   IntPtr intptrStruct = Marshal.AllocCoTaskMem(Marshal.SizeOf(struct_IPI));   
 
   // Converting structure to IntPtr   
   Marshal.StructureToPtr(struct_IPI, intptrStruct, true);   
 
   bool iReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_PROXY, intptrStruct, Marshal.SizeOf(struct_IPI));   
  }   
 
  private void StartShua()   
  {   
   statusBar1.Panels[0].Text = "正在使用" + arrText[k].ToString() + "代理IP访问网站";  
   this.listBox1.SetSelected(k,true);  
   RefreshIESettings(arrText[k].ToString());   
   System.Object nullObject = 0;   
   string strTemp = String.Empty;   
   System.Object nullObjStr = strTemp;  
   axWebBrowser1.Navigate(strUrl, ref nullObject, ref nullObjStr, ref nullObjStr, ref nullObjStr);  
   k+=1;  
   if(k>=i)k=0;  
  }  
  private void button1_Click_1(object sender, System.EventArgs e)  
  {  
   arrText.Clear();  
   i = 0;  
   if(openFileDialog1.ShowDialog() ==DialogResult.OK)  
   {  
    string strPath,strLine = "";  
    strPath = openFileDialog1.FileName.ToString();  
    StreamReader sr = new StreamReader(strPath);  
    while(strLine != null)  
    {  
     strLine = sr.ReadLine();  
     if(strLine != null)  
     {  
      i+=1;  
      arrText.Add(strLine);  
      listBox1.Items.Add(strLine);  
     }  
    }  
    sr.Close();  
   }  
  }  
  private void timer1_Tick(object sender, System.EventArgs e)  
  {  
   StartShua();  
  }  
 
  private void button2_Click(object sender, System.EventArgs e)  
  {  
   Total = listBox1.Items.Count;  
   strUrl = txtWebUrl.Text;  
   if(button2.Text == "开始刷流量")  
   {  
    if(i == 0 && Total == 0)return;  
    if(strUrl.Length == 0)return;  
    StartShua();  
    button2.Text = "停止刷流量";  
    timer1.Enabled = true;  
    timer1.Start();  
    button1.Enabled = false;  
    button3.Enabled = false;  
   }  
   else 
   {  
    timer1.Stop();  
    timer1.Enabled = false;  
    button2.Text = "开始刷流量";  
    button1.Enabled = true;  
    button3.Enabled = true;  
    arrText.Clear();  
   }  
  }  
 
  private void button3_Click(object sender, System.EventArgs e)  
  {  
   arrText.Clear();  
   i = 0;  
   listBox1.Items.Clear();  
   string strHtml = "";  
   string strPort = "";  
   string strResultIP = "";  
   long PosB = 0;  
   long PosA = 0;  
   long PosC = 0;  
   string Url = "http://www.pass-e.com/proxy/";  
   try 
   {  
    strHtml = GetHtml(Url);  
    strHtml = checkStr(strHtml);  
    strHtml = strHtml.ToLower();  
    PosA = strHtml.IndexOf("list",0);  
    //MessageBox.Show(GetHtml(Url));  
    while(PosA>0)  
    {  
     i+=1;  
     PosB = strHtml.IndexOf(",",(int)PosA);  
     strResultIP = strHtml.Substring((int)PosA,(int)PosB-(int)PosA);  
     strResultIP = strResultIP.Replace("list","");  
     PosC = strHtml.IndexOf(",",(int)PosB+1);  
     strPort = strHtml.Substring((int)PosB,(int)PosC-(int)PosB);  
     strPort = strPort.Replace(",","");  
     listBox1.Items.Add(strResultIP+":"+strPort);  
     PosA = strHtml.IndexOf("list",(int)PosC);  
     arrText.Add(strResultIP+":"+strPort);  
    }  
   }  
   catch(Exception ex)  
   {  
    MessageBox.Show(ex.Message,TitleInfo,MessageBoxButtons.OK, MessageBoxIcon.Exclamation);  
   }  
  }  
  public string checkStr(string html)   
  {   
   string str = Convert.ToString((char)34);  
     
   Regex regex1 = new Regex(@"<mce:script[\s\S]+</script *><!--  
", RegexOptions.IgnoreCase);   
   Regex regex2 = new Regex(@" href *= *[\s\S]*script *:", RegexOptions.IgnoreCase);   
   Regex regex3 = new Regex(@" no[\s\S]*=", RegexOptions.IgnoreCase);   
   Regex regex4 = new Regex(@"<iframe[\s\S]+</iframe *>", RegexOptions.IgnoreCase);   
   Regex regex5 = new Regex(@"<frameset[\s\S]+</frameset *>", RegexOptions.IgnoreCase);   
   Regex regex6 = new Regex(@"\<img[^\>]+\>", RegexOptions.IgnoreCase);    
   Regex regex7 = new Regex(@"</p>", RegexOptions.IgnoreCase);   
   Regex regex8 = new Regex(@"<p>", RegexOptions.IgnoreCase);   
   Regex regex9 = new Regex(@"<[^>]*>", RegexOptions.IgnoreCase);  
   html = html.Replace("\r\n","");  
   //html = regex1.Replace(html, ""); //过滤<script>  
// --></mce:script>标记   
   html = regex2.Replace(html, ""); //过滤href=javascript: (<A>) 属性   
   html = regex3.Replace(html, " _disibledevent="); //过滤其它控件的on...事件   
   html = regex4.Replace(html, ""); //过滤iframe   
   html = regex5.Replace(html, ""); //过滤frameset   
   html = regex6.Replace(html, ""); //过滤frameset   
   html = regex7.Replace(html, ""); //过滤frameset   
   html = regex8.Replace(html, ""); //过滤frameset   
   html = regex9.Replace(html, "");   
   html = html.Replace(" ", "");   
   html = html.Replace("</strong>", "");   
   html = html.Replace("<strong>", "");  
   html = html.Replace("\n","");  
   html = html.Replace(str ,"");  
   html = html.Replace("}" ,"");  
   html = html.Replace("(" ,"");  
   html = html.Replace(")" ,"");  
   //html = html.Replace(";" ,"");  
   html = html.Replace("'" ,"");  
   html = html.Replace(" " ,"");  
   html = html.Replace(" ","");  
   return html;   
  }  
  public string GetHtml(string myUrl)   
  {   
   HttpWebRequest myHttpWebRequest;   
      
   HttpWebResponse myHttpWebResponse;   
      
   //string Html;   
      
   try   
   {   
          
    string URL = myUrl;   
          
    Uri myUri = new Uri(myUrl);   
          
    WebRequest myWebRequest = WebRequest.Create(URL);   
          
    //使用Creat方法创建WebRequest实例   
          
    myHttpWebRequest = (HttpWebRequest)myWebRequest;   
          
    //实现WebRequest类型和HttpWebRequest类型的转换   
          
    WebResponse myWebResponse = myHttpWebRequest.GetResponse();   
          
    //获得响应信息   
          
    myHttpWebResponse = (HttpWebResponse)myWebResponse;   
          
    Stream myStream = myHttpWebResponse.GetResponseStream();   
          
    //获得从当前Internet资源返回的响应流数据   
          
    StreamReader srReader = new StreamReader(myStream, Encoding.Default);   
          
    //利用获得的响应流和系统缺省编码来初始化StreamReader实例。   
          
    string sTemp = srReader.ReadToEnd();   
          
    //从响应流从读取数据   
          
    srReader.Close();   
          
    return sTemp;   
   }   
      
    //显示读取的数据 ( )   
      
   catch (WebException WebExcp)   
   {   
          
    return WebExcp.Message.ToString();   
   }   
  }   
 }  
 
}  
 

原文地址:https://www.cnblogs.com/yeye518/p/2231643.html