使用代理IP,点击你的链接

   我想有很多人想用不同的IP点击一个链接吧,想多提升点广告的点击量吧(呵呵,你别有用心的话后果自负),今天做个使用代理IP来点击链接的小软件,测试过,一般情况下没问题。
       大家不想以为这是多么高深的技术,或者多么复杂的技术。简单来说,C#4句话搞定:
               WebClient wc = new WebClient();
                WebProxy proxy = new WebProxy(ip);
                wc.Proxy = proxy;
                wc.DownloadData(link);
       呵呵,但是小工具成型的话,这几句话就不OK啦。基本思路就是用多线程用N个IP去循环处理N个链接。但这个过程需要一段时间,因此用单线程的话会造成程序长时间未响应,WINDOWS会报错。
  在这个小工具中,需要处理IP数组和链接数组,稍微人性化一点,加个进度条。这里唯一个小难点就是非创建控件线程访问该控件会抛出异常。
                ThreadStart ts = new ThreadStart(Run);
                Thread t = new Thread(ts);
                t.Start();
       用一个新线程启动主要模块
                void Run()
                {
                      progressBar1.Value++;
                }
       问题出现了,运行到progressBar1.Value++时异常就出现了,如上所述.
       解决办法很简单:
       public delegate void ProgressBar1InitInvokeDelegate();
       public void ChangeProgressBarValue()
        {
            if (progressBar1.InvokeRequired == true)
            {
                progressBar1.BeginInvoke(new ProgressBar1InvokeDelegate(ChangeProgressBarValue));
            }
            else
            {
                progressBar1.Value++;
            }
        }

        void Run()
                {
                      ChangeProgressBarValue();
                }
       接下来还想什么,网上找些代理IP去试试吧,祝您一路“点”通!:)
       第一次,不会上传包,代码贴在下面:
    .cs文件
namespace WebClicker
{
    
public partial class Clicker : Form
    
{
        
= State =
        
public delegate void Button2InvokeDelegate(string text);
        
public delegate void ProgressBar1InvokeDelegate();
        
public delegate void ProgressBar1InitInvokeDelegate(int value);
        
public delegate void lblInfoInvokeDelegate(string text);

        
public Clicker()
        
{
            InitializeComponent();
        }


        
public enum ProcessState
        
{
            Begin 
= 0,
            Stop 
= 1
        }


        
public void ChangelblInfoText(string text)
        
{
            
if (lblInfo.InvokeRequired == true)
            
{
                lblInfo.BeginInvoke(
new lblInfoInvokeDelegate(ChangelblInfoText), new object[] { text });
            }

            
else
            
{
                lblInfo.Text 
= text;
            }

        }


        
public void ChangeButton2Text(string text)
        
{
            
if (button2.InvokeRequired == true)
            
{
                button2.BeginInvoke(
new Button2InvokeDelegate(ChangeButton2Text), new object[] { text });
            }

            
else
            
{
                button2.Text 
= text;
            }

        }

        
public void InitprogressBar(int value)
        
{
            
if (progressBar1.InvokeRequired == true)
            
{
                progressBar1.BeginInvoke(
new ProgressBar1InitInvokeDelegate(InitprogressBar), new object[] { value });
            }

            
else
            
{
                progressBar1.Minimum 
= 0;
                progressBar1.Maximum 
= value;
                progressBar1.Step 
= 1;
                progressBar1.Visible 
= true;
                progressBar1.Value 
= 0;
            }

        }

        
public void ChangeProgressBarValue()
        
{
            
if (progressBar1.InvokeRequired == true)
            
{
                progressBar1.BeginInvoke(
new ProgressBar1InvokeDelegate(ChangeProgressBarValue));
            }

            
else
            
{
                progressBar1.Value
++;
            }

        }

        
public void EndProgressBar()
        
{
            
if (progressBar1.InvokeRequired == true)
            
{
                progressBar1.BeginInvoke(
new ProgressBar1InvokeDelegate(EndProgressBar));
            }

            
else
            
{
                progressBar1.Value 
= 0;
                progressBar1.Visible 
= false;
            }

        }


        
private void button1_Click(object sender, EventArgs e)
        
{
            
string temp = Utility.OpenDialog();
            
if (string.IsNullOrEmpty(temp) == false)
            
{
                txtFile.Text 
= temp;
            }

        }


        
private void button4_Click(object sender, EventArgs e)
        
{
            
string temp = Utility.OpenDialog();
            
if (string.IsNullOrEmpty(temp) == false)
            
{
                txtLinkFile.Text 
= temp;
            }

        }


        
private void button2_Click(object sender, EventArgs e)
        
{
            
if (button2.Text.Equals("运行"))
            
{
                ChangelblInfoText(
"正在点击...");
                ThreadStart ts 
= new ThreadStart(Run);
                Thread t 
= new Thread(ts);
                t.Start();
            }

            
else
            
{
                ChangelblInfoText(
"正在停止点击...");
                
this.State = ProcessState.Stop;
            }

        }


        
void Run()
        
{
            
this.State = ProcessState.Begin;
            
if (string.IsNullOrEmpty(txtFile.Text.Trim()) || string.IsNullOrEmpty(txtLinkFile.Text.Trim())) return;
            ChangeButton2Text(
"停止");
            
string temp = System.Text.RegularExpressions.Regex.Replace(Lihui.Common.FileHelper.ReadText(txtFile.Text), " ""|");
            
string[] arrayIP = temp.Split('|');

            InitprogressBar(arrayIP.Length);

            temp 
= System.Text.RegularExpressions.Regex.Replace(Lihui.Common.FileHelper.ReadText(txtLinkFile.Text), " ""|");
            
string[] arrayLink = temp.Split('|');
            List
<string> errorIPList = new List<string>();
            
foreach (string ip in arrayIP)
            
{
                
if (StopThread()) break;
                ChangeProgressBarValue();
                
if (string.IsNullOrEmpty(ip.Trim())) continue;
                WebClient wc 
= new WebClient();
                WebProxy proxy 
= new WebProxy(ip);
                wc.Proxy 
= proxy;
                
foreach (string link in arrayLink)
                
{
                    
if (StopThread()) break;
                    
if (string.IsNullOrEmpty(link.Trim())) continue;
                    
try
                    
{
                        wc.DownloadData(link);
                        ChangelblInfoText(
string.Format("{0}点击{1}一次,正在点击...", ip, link));
                    }

                    
catch
                    
{
                        errorIPList.Add(ip);
                    }

                }

            }


            
foreach (string errip in errorIPList)
            
{
                Lihui.Common.FileHelper.WriteText(Environment.CurrentDirectory 
+ "/ErrorIP/errorIp.txt", errip + Const.ENTER_CHAR, true);
            }

        }

        
bool StopThread()
        
{
            
if (this.State == ProcessState.Stop)
            
{
                ChangeButton2Text(
"运行");
                ChangelblInfoText(
"已停止");
                EndProgressBar();
                
return true;
            }

            
return false;
        }

    }

}
.designer.cs文件:
namespace WebClicker
{
    
partial class Clicker
    
{
        
/// <summary>
        
/// Required designer variable.
        
/// </summary>

        private System.ComponentModel.IContainer components = null;

        
/// <summary>
        
/// Clean up any resources being used.
        
/// </summary>
        
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>

        protected override void Dispose(bool disposing)
        
{
            
if (disposing && (components != null))
            
{
                components.Dispose();
            }

            
base.Dispose(disposing);
        }


        
Windows Form Designer generated code

        
private System.Windows.Forms.Button button4;
        
private System.Windows.Forms.Label label2;
        
private System.Windows.Forms.TextBox txtLinkFile;
        
private System.Windows.Forms.Button button1;
        
private System.Windows.Forms.Label label1;
        
private System.Windows.Forms.TextBox txtFile;
        
private System.Windows.Forms.Button button2;
        
private System.Windows.Forms.ProgressBar progressBar1;
        
private System.Windows.Forms.TextBox lblInfo;
    }

}
*** 用途 *** * 刷网站流量、用户点击量、快速连续点击 * 适用于各类需要代替手工点击的场合 *** 软件特征 *** * 支持最小化后台运行 * IE9内核支持 * 支持代理IP(仅通用版付费用户赠送免费代理ip采集工具) * 支持ADSL自动拨号 * 允许用户设定浏览重置次数 * 支持cookie自动清理 * 随机UserAgent,可模拟chrome浏览器、手机页面 * 支持Flash页面 * 支持网页多点滚动点击 * 支持打开(搜索)指定网页后,进行二次点击 * 支持动作间隔范围设定,运行时随机取时间间隔 * 支持弹出页面二次点击 * 支持加载页面后,连续多点持续点击 * 支持完成任务后自动退出程序 * 支持自动开始执行动作 * 支持隐藏运行 * 支持网址模糊匹配点击 * 支持iframe内链接点击 *** 使用说明 *** 1、下载后,直接运行 webclick.exe 2、在左侧栏设定运行参数 3、单击“开始”按钮。 坐标点击设定: * 定时刷新、随机浏览不需要设定坐标 * 自动点击坐标设定时,多个坐标之间用“|”符号分隔,参考:http://www.werun.cn|123,122|233,23|... 如何查看坐标: * 输入网址,点击“查看坐标”按钮 * 在右侧网页窗口移动鼠标到要点击的超级链接上,状态栏左下角会提示坐标信息 * 注意查看坐标时,不要改变网页窗口的大小! URL模糊点击: * 指点击url包含指定关键字的第一条链接。设定格式参考:http://www.werun.cn|lng_en.htm adsl拨号名如何设定: * 打开网络连接文件夹,获取对应adsl的拨号名。(宽带账户名和密码保存在拨号连接属性里) * 如果拨号名是“网络连接”或“宽带连接”,请改名。比如“adsl123” 持续点击: * 只设置一个网址,后面加多个目标点击坐标 * 间隔时间设定见配置文件项“intervalClickMore”;缺省500毫秒 解释: * 动作次数:每次打开页面、点击页面、关闭;算一次动作;假如有10个网址,动作次数10次,那么每个网址会被点击1次(计算公式:10次动作/10个网址) 注, * 参考时间间隔:要单击的坐标数量 * 单个页面加载的时间。单位:秒 * 用户自定义IP文件名 myip.txt * config.ini文件中设定更多参数 * 免费的代理ip代理IP采集工具操作说明 * 一个网址的多个坐标点击也算是一次动作 * 有区域性IP要求的用户,可以提供对在线IP提取系统支持的二次开发。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值