7

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

 3 years ago
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.
neoserver,ios ssh client

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

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 行好么,-_-!!!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK