分享
 
 
 

新浪VIVI自动提交与验证码识别全部源代码详解

王朝other·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

本程序要求模拟精灵2005 v6.80 以上版本

模拟精灵2005 v6.80 下载地址

------------------------------

yhhe.net 下载: [/url][url=http://www.yhhe.net/Fairy_Ape.exe][url=http://www.yhhe.net/Fairy_Ape.exe]http://www.yhhe.net/Fairy_Ape.exehttp://www.yhhe.net/Fairy_Ape.exe

1he.net 下载: [/url][url=http://1he.net/Fairy_Ape.exe][url=http://1he.net/Fairy_Ape.exe]http://1he.net/Fairy_Ape.exehttp://1he.net/Fairy_Ape.exe

声明

------------------------------------------------------

本站公开的所有验证码示例不保证长期有效性,仅保证发布时有效.

相应网站更改验证码以后不再提供任何更新,不提供任何技术支持.

模拟精灵是首个公开系统有效验证码识别技术的网站,

其目的在于帮助网站建设者相应的改善验证码技术(事实上我们也看到了很多网站有效的改良了验证码).

我们在于公开探讨验证码识别技术(实际上完全可以加密源代码提供),

并非是鼓励滥发垃圾信息(我们自已除了测试,不会用这些代码去发广告).

如果本文触犯了任何网站的利益,请通知本站将立即删除.

说明

------------------------------------------------------

首先到新浪VIVI注册一个用户名

新浪VIVI的验证码有时候有,有时候没有,可能是为了防止机器人,不过本程序自动识别是否有验证码

其实在页面上做一些文章,例如提一些问题,或者表单使用随机名字等等,对模拟精灵没有任何作用。

第一步:验证码采样(没有找到5和0 验证码好象不会出现这两个字符)

1、打开模拟精灵2005,新建模拟程序,把下面的源代码复制到“源码编辑器-->脚本区块”

2、点击“生成模拟程序”按钮

3、重复运行下面的程序,并把生成的图片样本改为“图片上的字符.png”

img = image.new();

--下载图像,没有后缀名要显示指定*.bmp格式

img:getURL("[/url][url=http://vivi.sina.com.cn/collect/createimage.php?type=collect&imagehash=1d10eee25be45e7ae7e1dbe7081e3a07]http://vivi.sina.com.cn/collect/createimage.php?type=collect&imagehash=1d10eee25be45e7ae7e1dbe7081e3a07","*.png")

--附注:image库也有抓屏函数,可以直接在屏幕上截取验证码。

image.corp(img, 13 ,0 , 13 + 72 , 20 )

img:save("c:\\test\\test.png") --保存到硬盘

--折分图片,指定一行四列

img2,img3,img4,img5 = img:split(1,4);

img2:save("c:\\test\\0001.png")

img3:save("c:\\test\\0002.png")

img4:save("c:\\test\\0003.png")

img5:save("c:\\test\\0004.png")

image.del(img);

第二步:生成样本数据

1、打开模拟精灵2005,新建模拟程序,把下面的源代码复制到“源码编辑器-->脚本区块”

2、点击“生成模拟程序”按钮

3、运行模拟程序

4、点击“读取源代码按钮”,在“数据区块”中就是生成的样本数据,复制到你的程序中就可以了

codeKey ={};

-- 数字键名不能写在 {} 里面,注意字符串索引叫键名,与数字索引(也就是没有键名)是不同的

-- 你可以写 codeKey.a = true codeKey={a=true} 但是你不能写 codeKey.1 = true 或 codeKey = {1=true} 这是不符合语法的

-- 你可以象下面这样写,用下面这种写法还可以定义中文的变量名,例如_G["中文变量"] = true;

codeKey["1"] = true;

codeKey["2"] = true;

codeKey["3"] = true;

codeKey["4"] = true;

codeKey["6"] = true;

codeKey["7"] = true;

codeKey["8"] = true;

--k参数为键,v参数表示值 一个典型的table迭代器回调函数

loadCodeKey = function(k,v)

local img = image.new();

img:load("C:\\test\\"..k..".png")

img:bpp(1);

img:bpp(24);

img:corp( 5, 5, 13,15 )

img:save("C:\\test2\\"..k..".png")

codeKey[k]= string.encode( img:getBytes("*.png") , ""); --因为转换到字符串还是二进制,所以用base64进行编码

image.del(img);

end;

--遍历表codekey的所有元素,调用loadcodekey加载图片文件

table.foreach (codeKey, loadCodeKey);

--把所有图片保存到数据岛,

ape:saveTable(codeKey,"验证码样本")

三、全部源代码

1、打开模拟精灵2005,把下面的源代码复制到“源码编辑器”

2、点击“生成模拟程序”按钮

3、在“自定义属性”中设置新浪VIVI的用户名与密码

<?xml version="1.0" encoding="gb2312" ?>

<ApeML LID="CHS" MD="0" 抓屏模式="0" 名称="新浪VIVI自动提交程序" 作者="模拟精灵 2005" 信息窗口="true" 速度="10" 循环次数="10" 自定义属性="登陆密码 = 123,登陆用户名 = username,页面ID = 321">

<!--创建时间:2005年11月12日-10:38-->

<脚本区块 语言="LAScript" 名称="init登录" 延时="0" 启用="true" 编辑密钥="" 运行公钥="">

<![CDATA[

--区块名字前添加"init"前缀则不会重复运行

--using("_G.std"); --从外部文件引用名字空间

--设置标题每行一个

local strTitle = [[西藏叛乱内幕

免费在线观看电影免费下载

〖美女图片〗~怎么看都清新

赤裸更圣洁---超级唯美的人体

新浪图像搜索引擎 性感

免费QQ短信

超恐怖!人皮杂技表演-就要看

顶级性感内衣秀上演致命诱惑

绝美图库--华声在线

[暴笑flash]拾金记--Vista[爱

CD乐鉴:彩虹乐队新专辑《AWAK

演艺圈里的性交易真相批露

极品MM全套(不看别后悔)

杜月笙曾捐1500套防毒面具给八

哪些女孩儿最吸引男人(图) 天

风骚性感少妇浴室自拍,泄春光

火影忍者自定义头像_QQ卡通头

▓☆◇◆◇ 小荡妇轻解罗衣露]]

_tabTitle = string.split( strTitle,"\r\n"); --拆分到table列表(数组)

local strTag = [[

新闻

体育

图片

影音

动漫

两性

美腿

搞笑

视频

娱乐

文化

IT

音乐

高考

军事

小说

游戏

]]

_tabTag = string.split( strTag,"\r\n");

_set = ape:loadSetting() --载入 自定义属性

stopPlay = function()

ape:saveSetting(_set); -- 保存自定义属性

end;

--创建web窗体

wb = web.new("[/url][url=http://vivi.sina.com.cn/user/login.php]http://vivi.sina.com.cn/user/login.php");

wb:setSilent(true,true,true,true); --静默模式,所有信息框都别弹出来

--填用户名

local ele = wb:getEle("username");

if(not ele)then

win.messageBox("打开网页时出错");

web.del(wb);

do return false end;

end;

ele:setAttribute("value",_set["登陆用户名"])

--填密码

ele = wb:getEle("password2");

ele:setAttribute("value",_set["登陆密码"]);

--自动登录

ele:submit();

wb:wait(); --等待提交成功

element.del(ele);

wb:show(true);

]]>

</脚本区块>

<脚本区块 语言="LAScript" 名称="init随机生成字符串" 延时="0" 启用="true" 编辑密钥="" 运行公钥="">

<![CDATA[

string.random = function( n )--function表示这是一个函数,n是调用函数时输入到函数内部的一个参数。这里代表取几位长的字母组合

local str = "精好荐呵提交收藏发看是这网新浪在有是发的"

local from = 1;

local to = string.len(str);

local str2 = "";

math.random(from,to); -- 先运行一次再次把随机数打乱

local tab = {};

local j = 0;

math.random(from,to)

for i=1,n,1 do--1,n表示从1循环到n,第二个1表示步进。

j = math.random(from,to );--产生一个从1到26的随机数,调用math.random前要先初始化随机数种子

if( true )then --中文字是两个字节 25指出中文字的字节长度加一(一个中文字等于两个字节)

if(math.mod( j , 2) == 0)then --取到了后面的一个字节

tab[i]=string.byte( str , j-1 )

tab[i+1]=string.byte( str , j )

else --取到了前面的一个字节

tab[i]=string.byte( str , j )

tab[i+1]=string.byte( str , j+1 )

end;

i = i +1;--for迭代器向前跳一位

else --英文字

tab[i] = string.byte( str , j )

end;

end;

return string.char( unpack(tab) );--从tab表中取出第m个键,并和name连接

-- string.char是自动把多个ascii值组成一个字符串,unpack是打散tab代替多个参数

end;

]]>

</脚本区块>

<脚本区块 语言="LAScript" 名称="初始化验证码样本" 延时="0" 启用="true" 编辑密钥="" 运行公钥="">

<![CDATA[

--从数据区块读取base64编码的图片数据

codekey = ape:loadTable("验证码样本");

imgBinKey = {}; --这是一个图像数组,用来储存还原后的验证码样本的图片数据

--必须进行一个转换,因为codekey里面只是base64编码的普通字符串,而imgBinKey 将是真正的图片对象(二进制数据)

--还原到图片对象

toImage = function(k,v)

local img9 = image.new();

img9:setBytes( string.decode( v ,"") ,"*.png");

imgBinKey[k] = img9;

end;

table.foreach(codekey,toImage);

]]>

</脚本区块>

<脚本区块 语言="LAScript" 名称="提交页面" 延时="0" 启用="true" 编辑密钥="" 运行公钥="">

<![CDATA[

local n = math.mod( ape:runCount() , table.getn(_tabTitle) );

if(n==0)then n = 1 end;

local n2 = math.mod( ape:runCount() , table.getn(_tabTag) );

if(n2==0)then n2 = 1 end;

local title = _tabTitle[ n ]..string.random(3);

title = web.encodeURL(title)

_set["页面ID"] = _set["页面ID"] + 1;

local url = "[/url][url=http://www.yhhe.net/]http://www.yhhe.net/".._set["页面ID"]..".html"; --把404错误页指向真实网址

local vivi = "[/url][url=http://vivi.sina.com.cn/collect/icollect.php?pid=www.yhhe.net&title=]http://vivi.sina.com.cn/collect/icollect.php?pid=www.yhhe.net&title="..title.."&url="..url

wb:go(vivi);

wb:wait();

local ele = wb:getEle("desc");

ele:setTextin(title..string.random(3)); --多线文本框用 ele:setTextin() 函数修改文本

ele = wb:getEle("tag");

ele:setAttribute("value",_tabTag[n2])

elers = wb:getEle("rs");

eleimagehash = wb:getEle("imagehash");

if( elers and eleimagehash) then --有验证码

local strhash = eleimagehash:getAttribute("value")

--下载验证码图片

imgD = image.new();

if (imgD:getURL("[/url][url=http://vivi.sina.com.cn/collect/createimage.php?type=collect&imagehash=]http://vivi.sina.com.cn/collect/createimage.php?type=collect&imagehash="..strhash,"*.png") ~= true) then

win.messageBox("下载图像失败","")

image.del(imgD)

do return false end;

end;

imgD:corp( 13 ,0 , 13 + 72 , 20 )

--使用split函数分割图片

img2,img3,img4,img5 = imgD:split(1,4);

function test(imgX)

imgX:bpp(1);

imgX:bpp(24);

imgX:corp( 5, 5, 13,15 )

local limit = 10000000000;

chr = "";

win.messagePrint("正在检测图片,请稍候....")

testimg = function(k,v)

local n = imgX:testXX(imgBinKey[k]);

if(n<limit)then

limit = n;

chr = k.."";

end;

end;

table.foreach(imgBinKey,testimg);

return chr;

end;

local strrs = test(img2)..test(img3)..test(img4)..test(img5);

imgD:paint(100,100,200 ,50 )

elers:setAttribute("value",strrs)

end;

-- 选择单选按钮中的第一个"公开"

ele,ele2 = web.getEle(wb,"ispub");

ele:setAttribute("checked","true")

ele = wb:getEle("Submit2");

--如果弹出对话框,按ID为7的按钮

web.msgProc = function(msg,hwnd) return 7; end; --[[回调函数,参数(对话框消息,web窗体句柄),返回值(对话框弹出后自动发送的按钮)]]

ele:submit();

wb:wait()

]]>

</脚本区块>

<数据区块>

<验证码样本>

<item key="1" value="iVBORw0KGgoAAAANSUhEUgAAAAgAAAAKCAIAAAAGpYjXAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAMklEQVQImb2OQQoAMAjDUv//53rYEMc821sTKJVtAJAEVI1Oe2KkV9iuhUeM2RD8fw5M6dMSCWcCZjAAAAAASUVORK5CYII=" ktype="string" vtype="string" />

<item key="2" value="iVBORw0KGgoAAAANSUhEUgAAAAgAAAAKCAIAAAAGpYjXAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAOElEQVQImX3MQRIAMARDUXH/O/9ujKKmdl6CAYCViTW1NgC1lpkUovEnM18V8FXbRdUbDI3g1d8ciIgp+KeUL44AAAAASUVORK5CYII=" ktype="string" vtype="string" />

<item key="3" value="iVBORw0KGgoAAAANSUhEUgAAAAgAAAAKCAIAAAAGpYjXAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAO0lEQVQImY2OSQ4AIAgDqeH/Xx4PJIiiiT3RDpsBtgsAlCYKSWHVJ4KNawr4EaW8dlX8fWPh17vWVwWY3c8nAhuBnZsAAAAASUVORK5CYII=" ktype="string" vtype="string" />

<item key="4" value="iVBORw0KGgoAAAANSUhEUgAAAAgAAAAKCAIAAAAGpYjXAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAANElEQVQImY2OSQoAIBDD0vn/n+tBcKGDmGMKJbLNgSTAdqWdVGv3sB6uIS1QrX2hr9ymKhn2lxURTzVrTwAAAABJRU5ErkJggg==" ktype="string" vtype="string" />

<item key="6" value="iVBORw0KGgoAAAANSUhEUgAAAAgAAAAKCAIAAAAGpYjXAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAOUlEQVQImY2PwQoAQAQF523+/5ffHqRsUTsXYgTZBiRRZKUC2O65Hgtyem4k0cVZ+toBHDbWc7cHL07xO98shs5PAAAAAElFTkSuQmCC" ktype="string" vtype="string" />

<item key="7" value="iVBORw0KGgoAAAANSUhEUgAAAAgAAAAKCAIAAAAGpYjXAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAANklEQVQImXWOQQoAMAjDov//c3dQGFj1mFgIHBeSJooA0tG+KCdpWdRrrvSLQVs4BTrDo8/cB36VGBCIDRIBAAAAAElFTkSuQmCC" ktype="string" vtype="string" />

<item key="8" value="iVBORw0KGgoAAAANSUhEUgAAAAgAAAAKCAIAAAAGpYjXAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAN0lEQVQImWP8//8/AwMDIyMjAwxARGAUA8P///+R2YwoqhgYELpx6qCeHUwoFiIBJjQ+RAU+ywGbEj7gy8pwpgAAAABJRU5ErkJggg==" ktype="string" vtype="string" />

</验证码样本>

</数据区块>

</ApeML>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有