簡體   English   中英

我如何通過php spamhaus ip blacklist查詢

[英]How do I query via php spamhaus ip blacklist

試圖查詢spamhaus.org以獲取黑名單ip。 一個例子是69.35.160.59如果我轉到https://www.spamhaus.org/lookup/並輸入它,它顯示在黑名單上與112.198.83.17相同,但是下面的代碼返回一個空數組。

我打印出網址,它看起來正確格式化為反向IP 17.83.198.112.zen.spamhaus.org

有任何想法嗎?

<?php

    $ip = "112.198.83.17";
    $blacklist = "zen.spamhaus.org";
    $url = implode(".", array_reverse(explode(".", $ip))) . ".". $blacklist;
    echo "$url<br>";
    $record = dns_get_record($url);
    print_r ($record);

?>

你說得對。 請參閱此處查看結果代碼http://www.spamhaus.org/faq/section/DNSBL%20Usage#366

這是我輸出的ip 69.35.160.59

Array (
    [0] => Array
        (
            [host] => 59.160.35.69.zen.spamhaus.org
            [type] => A
            [ip] => 127.0.0.4
            [class] => IN
            [ttl] => 900
        )

[1] => Array
    (
        [host] => 59.160.35.69.zen.spamhaus.org
        [type] => TXT
        [txt] => http://www.spamhaus.org/query/bl?ip=69.35.160.59
        [entries] => Array
            (
                [0] => http://www.spamhaus.org/query/bl?ip=69.35.160.59
            )

        [class] => IN
        [ttl] => 900
    )

你的代碼是正確的。 只要確保你沒有使用像8.8.8.8和8.8.4.4這樣的公共DNS解析器,因為如果這樣做,代碼將無效。 您可以通過查看文件/etc/resolv.conf來查看您正在使用的解析器

我創建了一個簡單的函數,如果與SpamHaus一起列出,則返回true。 檢查任何傳入的IP並允許或阻止:

function callSpamhaus($UserIP) {
    // NON-INFECTED IP FOR TESTING
    // 192.99.150.120
    // INFECTED IP FOR TESTING
    // 216.145.14.142
    $blacklist = "zen.spamhaus.org";
    $url = implode(".", array_reverse(explode(".", $UserIP))) . ".". $blacklist;
    $record = dns_get_record($url);
    if (is_array($record) && !empty($record)) :
        return TRUE;
    endif;
}

每次訪問運行該函數的站點時都會運行條件,使用您選擇的任何方法來獲取IP並為其創建變量:

$SpamHaus = callSpamhaus($IPAddress);
if ($SpamHaus === TRUE) :
     Redirect("/administration/accessblocked.php");
endif;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM