批量检查域名是否已注册(抢注域名神器)
source link: https://lcx.cc/post/4583/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
批量检查域名是否已注册(抢注域名神器)
2015-12-17 约 1896 字 预计阅读 4 分钟
前段时间写的一个小脚本,用来检查大量域名注册情况,源码如下:
Function echo(s) Wscript.Echo s End Function Public Function MidStr(s, a, b) '从指定字符串中截取两个字符串中间的字符:截取S中从A与B之间的字符串 Dim tmp IF InStr(s, a) > 0 And InStr(s, b) > 0 Then '判断特征字符是否存在 tmp = Mid(s, InStr(s, a) + Len(a)) '从s中截取所有a首次出现位置之后的字符 If InStr(tmp, b) > 0 Then '判断截取位置是否正确 tmp = Left(tmp, InStr(tmp, b) - 1) '在tmp中截取从开始到B首次出现位置之前的字符串 Else tmp = "" End IF End IF MidStr = tmp End Function Public Function FixStr(ByVal S) '删除字符串首尾空格、回车、换行 Do While Left(S, 1) = vbCr Or Left(S, 1) = vbLf Or Left(S, 1) = " " '删除字符串首:空格、回车、换行 S = Mid(S, 2) 'Echo Asc(Left(S, 1)) Loop Do While Right(S, 1) = vbCr Or Right(S, 1) = vbLf Or Right(S, 1) = " " '删除字符串尾:空格、回车、换行 S = Left(S, Len(S) - 1) 'Echo Asc(Right(S, 1)) Loop FixStr = S End Function Public Function GetRndItem(b) '从字符串数组中随机挑选一条 'Randomize 不能写在函数内部,会导致短时间间隔内相邻两次随机数一致,写在程序开始位置即可 GetRndItem = b(Int((UBound(b) - LBound(b) + 1) * Rnd + LBound(b))) '根据数组上、下标产生随机数,并获取该条数据 End Function Public Function RndNum(ByVal MinNum, ByVal MaxNum) '生成指定范围的随机数字(最小数,最大数):MinNum <= 返回值 <= MaxNum 'Randomize 不能写在函数内部,会导致短时间间隔内相邻两次随机数一致,写在程序开始位置即可 RndNum = Int((MaxNum - MinNum + 1) * Rnd + MinNum) '生成随机数字 End Function function geturl(url) Dim WinHttp Set WinHttp = CreateObject("WinHttp.WinHttpRequest.5.1") WinHttp.Open "GET", url, False '--------- '读取http代理列表(配合代理之王,防止封IP) if fso.FileExists("proxy.txt") then dim p p = split(FixStr(fso.OpenTextfile("proxy.txt", 1, False).Readall), vbcrlf) WinHttp.SetProxy 2, GetRndItem(p) '设置http代理 end if '--------- Randomize WinHttp.SetRequestHeader "Connection", "Close" WinHttp.SetRequestHeader "User-Agent", Int((99999999 * Rnd) + 11111111) WinHttp.SetRequestHeader "X-Forwarded-For", Int((255 * Rnd) + 1) & "." & Int((255 * Rnd) + 1) & "." & Int((255 * Rnd) + 1) & "." & Int((255 * Rnd) + 1) '--------- WinHttp.Send 'geturl = "status = " & WinHttp.Status & ", size = " & len(WinHttp.ResponseText) 'geturl = Bytes2BSTR(WinHttp.ResponseBody) geturl = WinHttp.ResponseText end function public function check(s) dim html, tmp html = geturl("http://panda.www.net.cn/cgi-bin/check.cgi?area_domain=" & s) if instr(html, "|216|") > 0 or instr(html, "<original>") = 0 then '|216|Query frequency is too high, please try again later check = html 'echo html 'wscript.quit else tmp = now & _ ", " & midstr(html, "<returncode>", "</returncode>") & _ ", " & midstr(html, "<key>", "</key>") & _ ", " & midstr(html, "<original>", "</original>") check = tmp fso.OpenTextFile(f, 8, True).WriteLine tmp end if end function '--------------------------------------------------------------------------------------------------- echo "--------------------------------------------------" echo "批量检查域名是否已注册(抢注域名神器)" echo "" echo "by: Nuclear'Atk" echo "qq: 624118310([email protected])" echo "blog: https://lcx.cc/" echo "usage:" echo " cscript check.vbs mode number_start number_end domain_length domain_type" echo "example:" echo " cscript /nologo check.vbs order 1111 2222 5 .com" echo " cscript /nologo check.vbs random 1111 2222 5 .com" echo "--------------------------------------------------" on error resume next Randomize dim fso set fso = CreateObject("Scripting.FileSystemObject") '获取参数 if WScript.Arguments.Count <> 5 then '参数不对则退出 echo "arguments count error!" wscript.quit else dim m, s, e, l, t, f m = WScript.Arguments(0) '生成模式(随机或顺序) s = WScript.Arguments(1) '起始数字 e = WScript.Arguments(2) '结束数字 l = WScript.Arguments(3) '域名长度 t = WScript.Arguments(4) '域名后缀 f = l & t & ".txt" '日志文件名 end if '批量生成域名并查询 dim x select case m case "order" '按顺序产生 dim i for i = s to e x = right(replace(space(l), " ", "0") & i, l) & t '组成域名 if instr(fso.OpenTextfile(f, 1, False).Readall, x) = 0 then '只查询没查过的域名(判断日志文件中是否存在该域名) echo check(x) else echo now & ", " & x & ", pass..." end if next echo now & ", done!" case "random" '随机产生 do x = right(replace(space(l), " ", "0") & RndNum(s, e), l) & t '组成域名 if instr(fso.OpenTextfile(f, 1, False).Readall, x) = 0 then '只查询没查过的域名(判断日志文件中是否存在该域名) echo check(x) else echo now & ", " & x & ", pass..." end if loop case else echo "mode error!" end select
说明及用法:
-------------------------------------------------- 批量检查域名是否已注册(抢注域名神器) by: Nuclear'Atk qq: 624118310([email protected]) blog: https://lcx.cc/ usage: cscript check.vbs mode number_start number_end domain_length domain_type example: cscript /nologo check.vbs order 1111 2222 5 .com cscript /nologo check.vbs random 1111 2222 5 .com --------------------------------------------------
由于当时只用来抢注数字域名,所以只具备两个模式:
1、按顺序生成特定位数、后缀的数字域名,并且检查。
2、随机生成特定位数、后缀范围内的数字域名,并且检查,适合在域名范围很大的情况下使用,例如检查7位数字域名,总量在百万以上,全部检查扫描一遍时间太久,则使用随机产生方式撞运气(会过滤掉已检查的重复域名),效率更快。
稍微改改代码,就可以检查拼音域名,或其他特定字典生成域名,支持任何后缀!
可以同时开启几十个进程协同工作(数量无上限),本人测试开启50进程同步扫描,峰值每秒扫描30-40个域名(5位数字com域名,一小时即可全部扫完!),使用 cmd 命令或者批处理即可实现,例子代码如下:
echo off & color a & cls rem setlocal EnableDelayedExpansion rem for /l %%i in (0,500,9999) do @( rem set /a sum=%%i+499 rem echo cscript check.vbs order %%i !sum! 4 .cc rem start cscript check.vbs order %%i !sum! 4 .cc rem ) for /l %%i in (1,1,10) do @( start cscript check.vbs random 0 99999 5 .cc ) rem pause
注意!如果同时开启多个进程协同工作,则需要配合“King Of The Proxy (代理之王) v1.0 发布、HTTP代理采集、验证工具”,用法很简单,使用代理之王验证完IP后,结果保存到同目录“proxy.txt”(默认文件名)即可自动调用,防止IP被封。
使用的接口为万网接口:http://panda.www.net.cn/cgi-bin/check.cgi?area_domain=baidu.com
返回值及含义(每个域名后缀都不一样,自己测一下就知道了):
210 : Domain name is available
211 : Domain name is not available
212 : Domain name is invalid
214 : Unknown error
其他功能及用法,交给各位自己发现吧!
留言评论(旧系统):
佚名 @ 2015-12-17 23:41:26
本站回复:
佚名 @ 2015-12-18 12:18:44
本站回复:
-_-!!!
夜行者 @ 2015-12-22 20:14:28
本站回复:
佚名 @ 2016-02-12 11:22:55
本人用php写了一个万能的
本站回复:
佚名 @ 2016-04-22 20:18:51
本站回复:
Any3ite @ 2016-04-25 14:21:56
我点了一下找答案,找到了答案 地上有130块钱你看到了没。 诶对了, 第17行代码有一个错误的地方,
反正我也不懂vbs我就瞎说了。
本站回复:
明明是 71 行好么,-_-!!!
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK