如何通过php spamhaus ip黑名单查询
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
相同的黑名单上,但是下面的代码 returns 是一个空数组。
我打印出 url 并且它在反向 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
)
您的代码是正确的。只要确保您没有使用 public dns 解析器,如 8.8.8.8 和 8.8.4.4,因为如果您这样做,代码将无法工作。
您可以通过查看文件 /etc/resolv.conf
来检查您使用的解析器
我创建了一个简单的函数,如果在 SpamHaus 中列出,该函数 returns 为真。检查所有传入 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;
正在尝试查询 spamhaus.org
列入黑名单的 ip。一个例子是 69.35.160.59
如果我转到 https://www.spamhaus.org/lookup/
并输入它,它会显示在与 112.198.83.17
相同的黑名单上,但是下面的代码 returns 是一个空数组。
我打印出 url 并且它在反向 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
)
您的代码是正确的。只要确保您没有使用 public dns 解析器,如 8.8.8.8 和 8.8.4.4,因为如果您这样做,代码将无法工作。 您可以通过查看文件 /etc/resolv.conf
来检查您使用的解析器我创建了一个简单的函数,如果在 SpamHaus 中列出,该函数 returns 为真。检查所有传入 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;