批量检查域名是否已注册(抢注域名神器) 

前段时间写的一个小脚本,用来检查大量域名注册情况,源码如下:

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(root@lcx.cc)"
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(root@lcx.cc)
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

666

本站回复:

666

Any3ite @ 2016-04-25 14:21:56

我点了一下找答案,找到了答案 地上有130块钱你看到了没。 诶对了, 第17行代码有一个错误的地方, 反正我也不懂vbs我就瞎说了。

本站回复:

明明是 71 行好么,-_-!!!