我通过检查HTTP 200状态代码检查站点站点是否已启动并运行:
<?php
$url = 'www.proxyserver-demo.com';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_exec($ch);
$retcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if (200==$retcode)
{
echo "All's well";
}
else
{
echo "not so much";
}
?>
Run Code Online (Sandbox Code Playgroud)
然而,我尝试的每个站点,即使是不存在的站点都会返回200 OK状态,这在不存在的情况下是不可能的.(我的代码总是输出"All's well")
我的操作系统是Centos linux,这可能是什么问题?
很抱歉滥用答案字段应该是一个评论,但我真的不能想办法正确地提供这些信息.老实说,我还不知道如何将评论鞭打到任何正确显示和格式化的形状中.: - |
无论如何,因为你的代码应该工作正常但是对你来说它总是在你检查HTTP响应时返回"一切正常",可能是你的ISP正在进行DNS劫持,这基本上是返回假的ip-address数据,重定向你到他们自己的服务器,通常以用户友好的幌子获取金钱.(ISP页面显示"此页面不存在"与广告或域名注册等服务的提供相结合.)
一种简单的测试方法就是使用dig之类的应用程序来请求DNS数据.对不存在的域的正常运行的DNS服务器的查询应返回NXDOMAIN作为其状态:
因此,当我们notexisting.fake使用以下命令检查完全假的域时:
dig A notexisting.fake.这通常应该给出:
harald@Midians_Gate:~$ dig A notexisting.fake.
; <<>> DiG 9.7.3 <<>> A notexisting.fake.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 28725
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;notexisting.fake. IN A
;; AUTHORITY SECTION:
. 1780 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2012061700 1800 900 604800 86400
;; Query time: 24 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sun Jun 17 18:05:10 2012
;; MSG SIZE rcvd: 109
Run Code Online (Sandbox Code Playgroud)
如你所见,要求这个不存在的域名notexisting.fake.返回我们
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 28725
Run Code Online (Sandbox Code Playgroud)
而当我们查询google.com时,用 dig A google.com.
harald@Midians_Gate:~$ dig A google.com.
; <<>> DiG 9.7.3 <<>> A google.com.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13223
;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;google.com. IN A
;; ANSWER SECTION:
google.com. 300 IN A 74.125.132.138
google.com. 300 IN A 74.125.132.139
google.com. 300 IN A 74.125.132.101
google.com. 300 IN A 74.125.132.113
google.com. 300 IN A 74.125.132.100
google.com. 300 IN A 74.125.132.102
;; Query time: 29 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sun Jun 17 18:05:20 2012
;; MSG SIZE rcvd: 124
Run Code Online (Sandbox Code Playgroud)
我们的查询返回正确的NOERROR
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13223
;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 0
Run Code Online (Sandbox Code Playgroud)
并返回为A记录找到的IP地址
;; ANSWER SECTION:
google.com. 300 IN A 74.125.132.138
google.com. 300 IN A 74.125.132.139
google.com. 300 IN A 74.125.132.101
google.com. 300 IN A 74.125.132.113
google.com. 300 IN A 74.125.132.100
google.com. 300 IN A 74.125.132.102
Run Code Online (Sandbox Code Playgroud)
因此,如果您对虚假域名的查询返回一个IP地址,那么您就知道问题出在您的DNS上,并且您的isp无疑会将每个不存在的请求重定向到他们自己的服务器,从而弄乱了您的'是我的网站启动策略'你将获得200 OK状态,但它实际上来自冒名顶替者.
如果是这种情况,那么你只能:
| 归档时间: |
|
| 查看次数: |
4980 次 |
| 最近记录: |