新浪投票不靠谱啊,连验证码都没有,一个人半天能刷好几百。
刷分利器 = 随机IP(ADSL路由+Chrome控制台JS断网重连) + 自动投票(IE+VBS)。
原理:
1. 新浪投票的重复检测机制:依靠判定投票者网络的外网IP在一定时间内是否多次投票来实现。(其实也不算弱,ADSL拨号还有时间呢,一分钟也就能投几票而已)
2. 由 1 可知,使用随机IP即可实现多次投票。
步骤:
1. 让IP自动随机。 (使用 ADSL路由 + Chrome控制台JS断网重连)
2. 让投票自动化。 (使用VBS + IE )
实现:
硬件坏境:ADSL猫 x1、路由器 x1、电脑 x1。
软件环境:windows xp(或win7)、默认浏览器IE、Chrome浏览器、杀毒软件请放行要执行的VBS脚本。
IP自动随机(没有ADSL宽带的可以不看,效率会低上好几倍)
以腾达某路由器为例:打开Chrome浏览器,打开路由器的网络设置,转到WLAN口设置页面,获取ADSL断开连接的按钮ID(在按钮上右键选“审查元素”)。
切换到 Console 选项卡,输入自动刷新IP的JS代码。
以下代码供参考:- // 全局变量,记录最后IP与锁定
- var LastIP = document.getElementById("wan1_ip").innerHTML;
- var ChangeNow = true;
-
- // 检查IP是否变更
- function check_ip() {
- var NowIP = document.getElementById("wan1_ip").innerHTML;
- console.log("LastIP: %s, NowIP: %s, ChangeNow: %s,DateTime: %s", LastIP, NowIP, ChangeNow, now());
- if ((NowIP == "0.0.0.0") || (NowIP == "")) {
- ChangeNow = false;
- return 0;
- }
- if ((LastIP == NowIP) && (ChangeNow == true)) {
- change_ip();
- } else {
- LastIP = NowIP;
- ChangeNow = false;
- }
- }
-
- // 更改IP
- function change_ip() {
- if (ChangeNow == true) {
- console.log(" --- > ChangeNow: %s, DateTime: %s", ChangeNow, now());
- ChangeNow = false;
- sub_status_change('WAN1');
- };
- }
-
- // 当前日期加时间(如:2009-06-12 12:00)
- function now()
- {
- var now = new Date();
- var year = now.getFullYear(); //年
- var month = now.getMonth() + 1; //月
- var day = now.getDate(); //日
- var hh = now.getHours(); //时
- var mm = now.getMinutes(); //分
- var ss = now.getSeconds(); //秒
- var ms = now.getMilliseconds(); //毫秒
- var clock = year + "-";
- month < 10 ? clock += "0" : clock += month + "-";
- day < 10 ? clock += "0" : clock += day + " ";
- hh < 10 ? clock += "0" : clock += hh + ":";
- mm < 10 ? clock += '0' : clock += mm + ":";
- ss < 10 ? clock += '0' : clock += ss + ".";
- clock += ms;
- return(clock);
- }
-
- // 时钟
- var timer1 = window.setInterval("check_ip()", 500);
- var timer2 = window.setInterval("ChangeNow=true;",25*1000);
-
- // 清除时钟
- //window.clearInterval(timer1);
- //window.clearInterval(timer2);
复制代码 ·
·
·
投票自动化
使用VBS来实现投票功能,具体步骤为:
1. VBS打开投票页面网址
2. 找到投票人,并选中
3. 自动点击投票按钮
4. 完成
以下代码供参考:- Do
- TouPiao
- CreateObject("WScript.Shell").Run "cmd /c taskkill /f /im iexplore.exe", 0, True
- Loop
-
- Sub TouPiao()
-
- On Error Resume next
- Do While Ping("www.sina.com") = False
- WScript.Sleep 200
- Loop
-
- Set ie = CreateObject("internetexplorer.application") '创建浏览器对象
- URL = "http://xxx.xxx.sina.com.cn/survey.php?id=xxx" ' 投票网址
-
- With ie
- ' Configure the IE window
- .RegisterAsDropTarget = False
- '.statusbar = False : .toolbar = False : .menubar = False : .addressbar = False : .Resizable = False
- .Visible = True : .Navigate(URL)
- End With
-
- With ie
- .width = 600 : .height = 200 ' 宽度与高度
- .left = .document.parentWindow.screen.width \ 2 - 300 ' 居中显示
- .top = .document.parentWindow.screen.height\ 2 - 200
- ' Test for IE 7 - cannot remove 'chrome' in that version
- REM nVersion = CSng(replace(split(_
- REM .document.parentWindow.navigator.appVersion, " ")(3)_
- REM , ";", ""))
- REM if nVersion < 7.0 Then .FullScreen = True
- End With
-
- WScript.Sleep 2000
-
- Do While ie.ReadyState <> 4 ' 这个是 判断 浏览器打开的网页是否装载 完全
- If Not Ping("www.sina.com") = True Then Exit Sub
- If Not LCase(ie.document.location.href) = LCase(URL) Then Exit Sub
- If Not Err.Number = 0 Then Exit Sub
- WScript.Sleep 2*100
- Loop
-
- 'WScript.Sleep 7*1000
-
-
- Set Items = ie.document.getElementsByTagName("input")
- For Each Item in Items
- If Item.name = "投票者单选框名称" And Item.value = "投票者ID" Then
- Item.focus()
- Item.Click
- rem Item.Click
-
- WScript.Sleep 1*1000
- Exit For
- End if
- Next
-
- ie.document.getElementById("JS_Survey_Submit").Click ' 自动点击投票
- WScript.Sleep 3*1000
-
- ie.Quit
-
- End Sub
-
-
- ' ----------------------------------------------------------------------------------------------------
- ' Ping 判断网络是否联通
- ' Msgbox Ping("www.baidu.com")
- Function Ping(ByVal sHost)
- Ping = False : If sHost = "" Then Exit Function
- On Error Resume Next
- Dim objWMIService, colItems, colItem, Reply_StatusCode, Reply_bytes, Reply_time, Reply_TTL
- Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
- Set colItems = objWMIService.ExecQuery("Select * from Win32_PingStatus " & "Where Address = '" & sHost & "'",,48)
- For Each objItem in colItems
- Reply_StatusCode = objItem.StatusCode ' 状态,0正常
- Reply_bytes = objItem.ReplySize ' 包大小
- Reply_time = objItem.ResponseTime ' 回应时间
- Reply_TTL = objItem.ResponseTimeToLive ' 生存时间
- If Reply_StatusCode = 0 Then Ping = True : Exit For
- Next
- Set colItems = Nothing
- Set objWMIService = Nothing
- End Function
复制代码 注:
此程序必须经专业人士自行修改后才能使用,本人不对他人使用该程序做的任何事负责。 |