⾃⼰动⼿写⼯具:⾃动点击⼩插件
⼀、模拟点击操作应⽤场景
  当我们需要对⼀个⽹页上的某个按钮进⾏多次点击以求得某种“好处”的时候,例如天猫的抢红包活动,我们可能需要点击N次之后才有可能获得⼀个红包,但是这个N是⼀个未知数,有可能我们要不停地点击半个⼩时甚⾄⼀个⼩时都还⽆法获得,⾃⼰估计也会点⿏标点得醉了。因此,针对这种情况,我们希望⾃⼰写⼀个⼩⼯具来让计算机帮我们做这件事。
  既然是让计算机模拟我们的点击操作,其思路⾃然是到指定的按钮或图⽚,循环对其执⾏click事件。于是,我们开始对其做⼀个最简单的实现来看看其基本思路。⾸先,我们准备⼀个⽹站,这⾥我是⽤ASP.NET开发了⼀个⽹页,其中有⼀张图⽚作为抢红包的按钮图⽚,然后写了⼀个⼀般处理程序。
  (1)前端⽹页的HTML代码:
<!DOCTYPE html>
<html xmlns="/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>测试页⾯</title>
<script src="Resource/Js/jquery-1.5.1.min.js"></script>
<script type="text/javascript">
$(function () {
$("#btnGetMoney").bind("click", function () {
$.ajax({
type: "GET",
url: "MyServiceHandler.ashx?action=GetRedEnvelope",
dataType: "json",
success: function (data) {
if (data.success) {
alert("恭喜!您已获得红包:" + ssage + " 元");
}
else {
alert("您的⼿⽓不好,下次再来抢吧");
}
},
error: function () {
alert('服务器未响应!');
}
});
});
});
</script>
</head>
<body>
<div >
<hr />
<img id="btnGetMoney" src="Resource/Image/red2014.png" alt="抢红包" />
<hr />
xquery注释</div>
</body>
</html>
View Code
  其显⽰效果如下图所⽰:
  (2)后端⼀般处理程序代码:
public void ProcessRequest(HttpContext context)
{
context.Response.Buffer = true;
context.Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
context.Response.AddHeader("pragma", "no-cache");
context.Response.AddHeader("cache-control", "");
context.Response.CacheControl = "no-cache";
context.Response.ContentType = "text/plain";
string returnJson = null;
if (!string.IsNullOrEmpty(context.Request["action"]))
{
switch (context.Request["action"].ToString())crontab用法配置每3小时
{
case"GetRedEnvelope":
context.Response.ContentType = "text/XML";
returnJson = GetRedEnvelope(context);
break;
}
}
context.Response.Write(returnJson);
context.Response.End();
}
private static Random ran = new Random();
private string GetRedEnvelope(HttpContext context)
{
JsonObject json = new JsonObject();
int number = ran.Next(1, 100);
if (number > 95)
pgp加密的文件怎么解密
{
// 5%的⼏率获得红包
current的名词json.success = true;
}
else
{
json.success = false;
}
jquery下载文件插件
JavaScriptSerializer serializer = new JavaScriptSerializer();
return serializer.Serialize(json);
}
View Code
  当⽤户点击前端⽹页中的图⽚时,会发出⼀个AJAX请求到服务端,服务端会⽣成⼀个1到100之间的
随机数来模拟概率,只有在随机⽣成的数字达到95以上(即5%的概率)才给⽤户返回获得红包的效果。
  ①没有获得红包的点击后的效果:
  ②获得红包的点击后的效果:
⼆、借助WebBrowser控件实现⾃动点击
  2.1 强⼤的控件—WebBrowser
    新建⼀个WindowsForm项⽬,拖⼊⼀个GroupPanel、TextBox、Button以及WebBrowser控件构成下⾯的界⾯效果:
  2.2 借助HtmlElement.InvokeMember⽅法模拟点击
PS:这⾥假设我们已经通过查看HTML代码知道了要模拟点击的按钮的id,不要告诉我说你不会查看⽹页的源代码哦。
void btnGetMoney_Click(object sender, EventArgs e)
{
AutoClick(10);
}
void AutoClick(int count = 1)
{
HtmlDocument dom = webBrowser.Document;
if(dom == null)
{
return;
}aliment
var btn = dom.GetElementById("btnGetMoney");
for (int i = 0; i < count; i++)
{
btn.InvokeMember("click");
}
}
  在C#中封装了针对DOM树的类:HtmlDocument,每⼀个Html标签都被封装为HtmlElement。这⾥我们⾸先通过DOM操作(GetElementById)到要点击的button按钮,然后⼀个循环操作,通过封装的InvokeMember⽅法执⾏click事件。默认情况下,这个⽅法只会执⾏⼀次,当然这⾥我们模拟了10次。
  2.3 简单模拟⾃动点击的效果演⽰
三、借助Google浏览器扩展插件实现⾃动点击
3.1 关于Google浏览器扩展插件
  Chrome是什么在此就不做赘述了,想必看到这篇⽂章的⼈对其都⾮常熟悉。Chrome⼀个突出的特点就是允许⽤户开发第三⽅插件以扩展浏览器功能。虽然IE、⽕狐也都⽀持第三⽅插件对浏览器功能进⾏拓展,但对其开发远没有Chrome浏览器插件⽅便,加之Chrome浏览器市场占有率持续增长,⼤家对Chrome 浏览器插件的开发更加感兴趣。下图是迅雷针对Chrome浏览器开发的扩展插件。
3.2 开发⾃动点击插件AutoClickDemo
  (1)插件的总⽬录:manifest.json
  每个Chrome插件都包含⼀个manifest.json的⽂件,这是Chrome插件的总⽬录,⾥⾯定义了每个资源都是做什么的。manifest.json⽂件⾥是⼀个json类型的数据。
  按chrome开发规范,我们⾸先建⼀个⽂件夹,如D:\AutoClickDemo\,在该⽂件夹下新建⼀个名为manifest.json的⽂本⽂件,并按实际情况放⼀个图⽚⽂件,作为插件的图标。然后新建⼀个名为myscript.js的js脚本⽂件,作为我们需要⾃定义模拟点击的脚本⽂件。最后,如果需要⽤到jQuery,还需要把jQuery放到⽂件夹⽬录中:
  该manifest.json⽂件的内容和解释如下:
  具体代码为:
{
"name": "刷红包(演⽰)",
"version": "1.0",
"manifest_version":2,
"description": "This is a auto click plug-in, you can use it in the web site",
"icons":{"16":"16.png","48":"48.png","128":"128.png"},
"permissions": ["*/*"],
"browser_action": {
"default_icon": "16.png"
},
"content_scripts":[
{
"matches":["localhost:4351/*"],
"js":["jquery-1.7.1.min.js","myscript.js"]
}
]
}
  (2)⾃定义的脚本:myscript.js
  刚刚manifest.json只是帮我们⽣成了⼀个⽬录给Chrome浏览器,具体的操作还得⾃定义⼀个js脚本来⽣成。代码很简单,就是每隔1秒钟点击⼀次按钮。写好⾃定义脚本后,在Chrome浏览器中添加这个扩展插件,以后在打开指定⽹页时都会加载我们的⾃定义脚本来完成我们想要的操作。
function autoClick(){
$("#btnGetMoney").click();
}
setInterval(autoClick,1000);
$(function(){
});
  (3)为Chrome添加扩展插件
  在Chrome菜单中,选择⼯具-扩展程序,进⼊以下界⾯。然后勾选住开发者模式,然后加载正在开发的扩展程序。
  (4)打开指定⽹页体验模拟点击效果
四、⼩结
  本次的⼩插件开发以模拟点击⼀个“抢红包”按钮为场景,以两种⽅式实现了⼀个简单得不能再简单的刷红包效果,但是其基本思路都我们都已经了解了。以后再⾯对这种应⽤,可以⾃⼰写⼀些功能丰富的插件或者程序来实现了。
作者:
本⽂版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在⽂章页⾯明显位置给出原⽂链接。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。