我想有很多人想用不同的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文件
.designer.cs文件:
大家不想以为这是多么高深的技术,或者多么复杂的技术。简单来说,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;
}
}
}
{
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;
}
}
}
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;
}
}
{
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;
}
}