• 新浪微博:
  • 微信 :
按键精灵电脑版
立即下载

软件版本:2014.05
软件大小:21.6M
更新时间:07-04

按键精灵安卓版
立即下载

软件版本:3.3.1
软件大小:62.5M
更新时间:5-24

按键精灵iOS版
立即下载

软件版本:1.3.5
软件大小:29.2M
更新时间:06-14

最新企业版UiBot
立即下载

软件版本:2.0
软件大小:194M
更新时间:03-15

快捷导航

登录 后使用快捷导航
没有帐号? 注册

登录 注册
返回列表 12345678» / 13
发新话题 回复该主题

[技术交流] 【院刊】-【201507期】简单一帖让你学会wqm全自动注册账号 [复制链接]

1#
本帖最后由 66球 于 2015-7-27 16:22 编辑

轻松学会wqm自动注册论坛账号


本文按键学院提供技术支持



按键学院交流群(1群已满):376122403

零基础学按键精灵群(2群):372671254

按键学院交流③群(3群):170084238





前俩期跟大家分别分享了关于wqm获取网页元素特征码的技巧和uu云远程打码平台的使用接入方法,这次小编把它们结合在一起,花了点时间用wqm写了一个简单、易懂的discuz论坛自动注册账号的小脚本分享给大家,有兴趣了解wqm写类似功能的童鞋不妨一看

填入注册信息时用到的元素特征码都是基于wqm分析组合出来的,不了解的童鞋建议先看看:【院刊】-【201507期】不要在一个元素特征字符串上吊死

[tr=rgb(154,205,50)]
思路流程


从它的注册页面上大概可以看出它是这么个流程

技术小难点:
1.验证问答那边给出的数字并不是纯色的,是渐变色的,如何才能正确识别验证问答的算术表达式
2.验证码的出现受网络的影响,并不是实时出现的,有时还直接出不来,会显示红"X",怎么能判断验证码是否正常出现再截图上传到远程答题平台进行自动打码

[tr=rgb(154,205,50)]
验证问答


游戏中的验证问答的数字是这样的,不容易直接用大漠提取文字本身做字库,但是背景色都是白色,所以小编原先是想通过大漠的ocr背景色识别来识别这些数字,但是发现效果不是很理想,主要是"-"号非常容易被识别错误,然后小编又想通过网页源文件配合正则来匹配出表达式,但是源文件好像没有这个表达式,最后偶然发现原来用wqm特征元素分析可以直接分析出整个的文本内容,所以利用web网页插件里的HtmlGet命令获取文本内容后直接替换就可以得到其表达式,再用eval函数即可返回其结果
相关代码如下
  1. Function 验证问答
  2. 内容= Plugin.Web.HtmlGet("text","tag:TD&index:21") //获取对应特征元素的文本信息
  3. TracePrint 内容
  4. 内容 = replace(内容, "换一个", "")
  5. 表达式 = replace(内容, "= ?", "")//得到算术表达式
  6. TracePrint 表达式
  7. 结果 = eval(表达式)//eval函数返回计算结果
  8. TracePrint 结果
  9. 验证问答=结果
  10. End Function
复制代码
[tr=rgb(154,205,50)]
判断验证码是否出现

细心的童鞋应该不难发现,验证码没出现区域范围内都是白色,验证码出现后,范围内的背景色就会变成其他颜色,所以小编这边用的是web网页插件里的gethwnd命令先获取页面句柄,然后配合后台定点取色命令判断验证码是否出现,相关代码
  1. Function 验证码截图
  2. 页面句柄 = Plugin.Web.GetHwnd()
  3. TracePrint 页面句柄
  4. Do
  5. 定点颜色 = Plugin.Bkgnd.GetPixelColor(页面句柄, 258, 585)
  6. TracePrint 定点颜色
  7. If 定点颜色 <> "FFFFFF" and 定点颜色<>"C0C0C0" Then
  8. TracePrint "验证码出现,开始截图"
  9. //截图代码
  10. call UU云打码 (105615, "56f19e68e2334cd2a8f9efe7b5cdc17f", "dd8878dd", "15987530", 页面句柄,232,575,369,634,1004)
  11. Exit Function
  12. ElseIf 定点颜色 = "C0C0C0" Then
  13. TracePrint "识别到验证码异常,换一个"
  14. Call Plugin.Web.HtmlClick("tag:A&txt:换一个&index:1")
  15. Delay 500
  16. Call 验证码截图
  17. End If
  18. Delay 300
  19. Loop
  20. End Function
复制代码
[tr=rgb(154,205,50)]
接入UU云打码

小编这边用的是UU云答题插件通过页面句柄进行后台验证码区域范围内截图并上传自动进行打码,相关代码:
  1. Call UU云打码 (105615, "56f19e68e2334cd2a8f9efe7b5cdc17f", "dd8878dd", "15987530", 页面句柄,232,575,369,634,1004)
  2. // uu云远程打码实现部分
  3. Function UU云打码(软件ID, 软件Key, 用户名, 密码, 页面句柄,左上X,左上Y,宽,高,类型编号)
  4. VCodeRet = Plugin.uu.easyRecognizeWndByHWndAndPos(软件ID, 软件Key, 用户名, 密码, 页面句柄, 左上X,左上Y,宽,高,类型编号, VCodeIdx)
  5. If VCodeIdx > 0 Then
  6. UU云打码 = Split(VCodeRet, "_")(1)
  7. TracePrint UU云打码
  8. Call Plugin.Web.HtmlInput(UU云打码,"TAG:INPUT&Name:seccodeverify")
  9. End If
  10. End Function
复制代码
[tr=rgb(154,205,50)]
整体代码
  1. Call 写入注册信息
  2. Function 写入注册信息
  3. PID=Plugin.Web.Bind("wqm.exe") '绑定wqm,使用wqm开头必用
  4. Call Plugin.Web.Go("http://www.discuz.net/member.php?mod=register")
  5. Call Plugin.Web.HtmlClick("tag:SPAN&txt:同意") '点击同意注册协议按钮
  6. Call Plugin.Web.HtmlInput (随机用户名, "id:username_Cakjsakd") '自动输入随机生成的用户名
  7. Call Plugin.Web.HtmlInput ("15987530aaa", "id:password_Aaskoq")
  8. Call Plugin.Web.HtmlInput ("15987530aaa", "id:password2_Caasd") '自动输入设置好的密码,密码可自定义
  9. Call Plugin.Web.HtmlInput (随机邮箱, "id:email_Vasdd") '自动输入随机生成的邮箱地址
  10. Call Plugin.Web.HtmlInput(验证问答, "TAG:INPUT&Name:secanswer") '自动输入验证问答结果
  11. Call 验证码截图
  12. Call Plugin.Web.HtmlClick("tag:STRONG&txt:提交") '点击提交按钮
  13. Delay 1000
  14. Call 判断是否注册成功并记录信息
  15. End Function
  16. Function 随机用户名
  17. For 10
  18. 随机用户名 = Lib.算法.随机取姓名()
  19. If instr(随机用户名, "夏") = 0 Then //系统屏蔽"夏"字
  20. 用户名 = 随机用户名
  21. traceprint 用户名
  22. Exit For
  23. End If
  24. Next
  25. End Function
  26. Function 随机邮箱
  27. For 10
  28. 十位数字 = Lib.算法.随机数字串(10)
  29. If left(十位数字, 1) <> 0 Then //判断第一位是否为0
  30. 随机邮箱 = cstr(十位数字) & "@qq.com"
  31. 邮箱=随机邮箱
  32. Exit For
  33. End If
  34. Delay 100
  35. Next
  36. TracePrint 邮箱
  37. End Function
  38. Function 验证问答
  39. 内容= Plugin.Web.HtmlGet("text","tag:TD&index:21") //获取对应验证问答特征元素的文本信息
  40. TracePrint 内容
  41. 内容 = replace(内容, "换一个", "")
  42. 表达式 = replace(内容, "= ?", "")//得到算术表达式
  43. TracePrint 表达式
  44. 结果 = eval(表达式)//eval函数返回计算结果
  45. TracePrint 结果
  46. 验证问答=结果
  47. End Function
  48. Function 验证码截图
  49. 页面句柄 = Plugin.Web.GetHwnd() '获取wqm当前页面句柄
  50. TracePrint 页面句柄
  51. Do
  52. 定点颜色 = Plugin.Bkgnd.GetPixelColor(页面句柄, 258, 585) '后台定点取色
  53. TracePrint 定点颜色
  54. If 定点颜色 <> "FFFFFF" and 定点颜色<>"C0C0C0" Then
  55. TracePrint "验证码出现,开始截图"
  56. //截图代码
  57. Call UU云打码 (105615, "56f19e68e2334cd2a8f9efe7b5cdc17f", "dd8878dd", "15987530", 页面句柄,232,575,369,634,1004)
  58. Exit Function
  59. ElseIf 定点颜色 = "C0C0C0" Then
  60. TracePrint "识别到验证码异常,换一个"
  61. Call Plugin.Web.HtmlClick("tag:A&txt:换一个&index:1")
  62. Delay 500
  63. Call 验证码截图
  64. End If
  65. Delay 300
  66. Loop
  67. End Function
  68. // uu云远程打码实现部分
  69. Function UU云打码(软件ID, 软件Key, 用户名, 密码, 页面句柄,左上X,左上Y,宽,高,类型编号)
  70. VCodeRet = Plugin.uu.easyRecognizeWndByHWndAndPos(软件ID, 软件Key, 用户名, 密码, 页面句柄, 左上X,左上Y,宽,高,类型编号, VCodeIdx)
  71. If VCodeIdx > 0 Then
  72. UU云打码 = Split(VCodeRet, "_")(1)
  73. TracePrint UU云打码
  74. Call Plugin.Web.HtmlInput(UU云打码,"TAG:INPUT&Name:seccodeverify")
  75. End If
  76. End Function
  77. Function 判断是否注册成功并记录信息 '记录注册成功的账号信息到日志
  78. t = now
  79. TracePrint "进入判断是否注册成功"
  80. Do
  81. 元素个数 = Plugin.Web.HtmlExists("tag:A&txt:退出") '判断页面是否有退出按钮,有则说明注册成功
  82. If 元素个数 > 0 Then
  83. 账号数量 = Plugin.File.ReadINI("注册成功的账号数量", "账号数量", "C:\账号记录.ini")
  84. TracePrint 账号数量
  85. If 账号数量 = "" Then
  86. 账号数量 = 1
  87. Else
  88. 账号数量 = clng(账号数量) + 1
  89. TracePrint 账号数量
  90. End If
  91. Call 输出日志( 账号数量,用户名,邮箱)
  92. Call Plugin.Web.Tips("注册成功,账号已记录,开始自动注册下一个")
  93. Call Plugin.Web.HtmlClick("tag:A&txt:退出")
  94. Call 写入注册信息
  95. ElseIf datediff("s", t, now) > 15 Then '15秒内页面没跳转则算注册超时失败,重新注册下一个,秒数可自定义
  96. Call Plugin.Web.Tips("该次注册超时,自动开始下一次注册")
  97. Call 写入注册信息
  98. End If
  99. Delay 200
  100. Loop
  101. End Function
  102. Sub 输出日志( 账号数量,用户名,邮箱)
  103. FileName = "C:\账号记录.ini"
  104. Call Plugin.File.WriteINI("注册成功的账号数量", "账号数量", 账号数量, FileName)
  105. Call Plugin.File.WriteINI("注册成功的账号", "用户名" & 账号数量, 用户名, FileName)
  106. Call Plugin.File.WriteINI("注册成功的账号", "注册邮箱"&账号数量, 邮箱, FileName)
  107. End Sub
复制代码

[tr=rgb(154,205,50)]
后记

今天关于使用wqm实现一个简单的自动论坛注册账号的功能就讲到这了,希望大家看后会觉得有用,其实现在的网站注册通常都需要输入手机号来验证了,这确实是一个比较头疼的问题,下期将分享下我们06天纵大大写的利用飞q手机验证码系统自动获取验证码的精美模板范例

相关院刊
【院刊】-【201507期】不要在一个元素特征字符串上吊死
【院刊】-【201507期】此帖在手,打码不愁
院刊总目录
showtopic.aspx?topicid=549014&forumpage=1&page=1




 



谢谢大家阅读,记得给小编送支花花 ! 顺手点个



[tr=rgb(143,188,143)]

按键精灵实战班开始报名啦!


安卓按键相关院刊

1、时间:7月1日——7月25日接受报名
2、时长:每周二、周四、周六
3、地点:实战班
4、项目准备:安装按键精灵2014,安装镇魔曲、按键精灵会员卡(报名会提供3个月)。
5、关于项目课程的安排:周一至周天白天可自行学习与实践,学院会提供为学员准备助教与老师进行解答,周二、周四、周六晚上8点开始授课,请各位学员到场学习。
6、学费费用:512(人民币)
7、本次实战课程全国招募66人,名额有限。

安卓按键精灵实战教学——天天酷跑(1)
showtopic.aspx?topicid=577597&forumpage=1&page=1

安卓实战教学第二波——天天酷跑(2)
showtopic.aspx?topicid=577909&forumpage=1&page=1

安卓实战——让脚本适应多种分辨率
showtopic.aspx?topicid=578339&forumpage=1&page=1
点我进入按键学院报名啦招生细节进群咨询招生办主任



    已有4评分我要评分查看所有评分

    最后编辑66球 最后编辑于 2016-01-14 15:07:13
    2#

    asdasdasd

    3#

    1111qqqqqqqqqqqqqqqqqqqqqqqqqqqqq

    4#

    试试看

    5#


    6#

    oi-0o

    7#

    啊飒飒的撒发生非师范

    8#

    1. {:5_136:}
    复制代码

    9#

    66666666666666666666666666666666

    10#

    我来看看!!!!!!

    11#

    目目目目目目目目目目目目

    12#

    好东西啊

    13#

    看看 简单一帖让你学会wqm全

    14#

    看看一下啊

    15#

    简单一帖让你学会wqm全自

    16#

    hf,,';';,;,,

    17#


    18#

    出现的,有时还直接出不来,会显示红"X"

    19#

    学习一观

    20#

    学习下怎么点击

    发新话题 回复该主题