Что нового

парсинг bit домена

mepsy

Новичок
Сообщения
7
Репутация
0
Здравствуйте.
подскажите с верной реализацией парсинга ip .bit домена
есть реализация я плюсах
Код:
#include "windows.h"
#include "stdio.h"
#include <winsock2.h>
#include <windns.h>
 
#pragma comment(lib,"ws2_32.lib")
#pragma comment(lib, "Dnsapi.lib")
 
void main()
{
    DNS_STATUS dnsStatus;
    IN_ADDR ipaddr;
    PDNS_RECORD ppQueryResultsSet, p;
    PIP4_ARRAY pSrvList = NULL;
 
 
    char* bitdomen = "bluishcoder.bit"; //целевой домен
 
    char* dnsips[] = { "103.25.202.192", "92.222.80.28", "78.138.97.93" }; //вшитые IP dns со страницы http://wiki.opennicproject.org/Tier2
    int num_dnsips = sizeof(dnsips) / sizeof(dnsips[0]);
 
    pSrvList = (PIP4_ARRAY)LocalAlloc(LPTR, sizeof(IP4_ARRAY));
 
 
    bool good_resolve = false;
    for (int i = 0; i < num_dnsips; i++)
    {
        pSrvList->AddrArray[0] = inet_addr(dnsips[i]);
        pSrvList->AddrCount = 1;
 
        //Та самая альтернативная API-шка
        dnsStatus = DnsQuery(bitdomen,
            DNS_TYPE_A,
            DNS_QUERY_USE_TCP_ONLY,
            pSrvList, // Documented as reserved, but can take a PIP4_ARRAY for the DNS server
            &ppQueryResultsSet,
            NULL);
 
        p = ppQueryResultsSet;
 
        while (p) // Loop through the returned addresses
        {
 
            ipaddr.S_un.S_addr = (p->Data.A.IpAddress);
 
            char* hostIP = inet_ntoa(ipaddr); // Результат!!!
 
            printf("The IP address of %s is %s \n", p->pName, hostIP);
 
            p = p->pNext;
 
            good_resolve = true;
        }
 
        if (good_resolve)
            break;
    }
 
    if (pSrvList) LocalFree(pSrvList);
 
    DnsRecordListFree(ppQueryResultsSet, DnsFreeRecordList);
 
    //hostIP сохраняем, вставляем в url-запросы и отстукиваем через wininet например
 
}
код который получился на автоит
Код:
#include <MsgBoxConstants.au3>
#include <array.au3>
Local $aURLS = [ _
        'bdns.io', _
        'bdns.at', _
        'bdns.bz' _
        ]
Local $ret

For $i = 0 To UBound($aURLS) - 1

    $ret = Ping($aURLS[$i], 500)
    If $ret = 0 Then
        Switch @error
            Case 1
                ConsoleWrite('! 1' & $aURLS[$i] & ' is offline' & @CRLF)
            Case 2
                ConsoleWrite('! 2' & $aURLS[$i] & ' unreachable' & @CRLF)
            Case 3
                ConsoleWrite('! 3' & $aURLS[$i] & ' is a bad destination' & @CRLF)
            Case 4
                ConsoleWrite('! 4' & $aURLS[$i] & ' error' & @CRLF)
        EndSwitch
        ContinueLoop
    EndIf
$xPage = InetRead("https://" & $aURLS[1] & "/r/domain.bit")
$sPage = BinaryToString($xPage)
$sIP = $sPage
MsgBox(0, 'bit2ip', $sIP)
Next

нужно вот что, попытаться получить со списка сайтов/апи ип указаного(ых) доменов в зоне .bit, но и не записывать полученый ип несколько раз, а получить всего 1, тоесть при выполнении кода получили ип с помощью bdns.io, этого достаточно, при следующем выполнении bdns.io стал не доступен, пробуем следующий .at, он так же не выдал ип а выдал ошибку, переход к следующему, bdns.bz выдал ип, записываем его и тд
 

gefestin

Новичок
Сообщения
2
Репутация
0
Тоже встал подобный вопрос, может кто поделится кодом
 
Верх