Php 通过检查CURLINFO_HTTP_代码来测试网站是否已启动,即使网站为false,也会返回200
我正在运行EasyHP和PHP5的Windows7机器上测试这个代码段,当我运行代码时,它仍然返回代码200,我使用的是一个不存在的url,所以它不应该,是吗?这是因为发生了重定向(例如到)?这正是我所怀疑的,但我正在努力寻找如何摆脱这一困境Php 通过检查CURLINFO_HTTP_代码来测试网站是否已启动,即使网站为false,也会返回200,php,curl,Php,Curl,我正在运行EasyHP和PHP5的Windows7机器上测试这个代码段,当我运行代码时,它仍然返回代码200,我使用的是一个不存在的url,所以它不应该,是吗?这是因为发生了重定向(例如到)?这正是我所怀疑的,但我正在努力寻找如何摆脱这一困境 $url = "http://www.bnkbkvbirbcx.co.uk"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADE
$url = "http://www.bnkbkvbirbcx.co.uk";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_NOBODY, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, FALSE);
$hr = curl_exec($ch);
$httpreturncode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $httpreturncode;
插入var_dump($hr,curl_getinfo($ch))生成此输出
string 'HTTP/1.1 200 OK
Date: Fri, 28 Sep 2012 20:18:16 GMT
Server: Apache
Cache-control: no-cache, no-store
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Pragma: no-cache
Connection: close
Content-Type: text/html; charset=UTF-8
' (length=224)
array
'url' => string 'http://www.bnkbkvbirbcx.co.uk' (length=29)
'content_type' => string 'text/html; charset=UTF-8' (length=24)
'http_code' => int 200
'header_size' => int 224
'request_size' => int 62
'filetime' => int -1
'ssl_verify_result' => int 0
'redirect_count' => int 0
'total_time' => float 0.063
'namelookup_time' => float 0.016
'connect_time' => float 0.031
'pretransfer_time' => float 0.031
'size_upload' => float 0
'size_download' => float 0
'speed_download' => float 0
'speed_upload' => float 0
'download_content_length' => float -1
'upload_content_length' => float 0
'starttransfer_time' => float 0.063
'redirect_time' => float 0
'certinfo' =>
array
empty
'redirect_url' => string '' (length=0)
我想建议为您的计算机/服务器设置另一个DNS服务器。您的提供商似乎将不存在的域重定向到其主页 我不知道你们的供应商virginmedia,但德国电信可以在他们的主页上禁用此选项 一个选择是使用一个开放/免费的DNS服务器,就像谷歌提供的一样,可以通过8.8.8.8和8.8.4.4访问
我希望这有帮助 我终于弄清了真相,我觉得自己很愚蠢,我花了这么长时间!我的isp确实使用了一个“方便的功能”进行干预,如下所示:“如果您输入的地址没有找到站点,这个方便的功能将把不正确的地址转换为web搜索,因此您将获得最接近的匹配项列表,而不是错误消息。”。我还发现,我可以选择“关闭”这个方便的功能,我做到了,现在我得到了我期望的结果。谢谢你的所有意见,你可以从我的一些发帖中看出我是stackoverflow的新手,但是我发现分享我的问题很好 下面的脚本可能对在此处结束搜索的人有所帮助 伪造短语用于检测ISP“搜索辅助”广告软件HTTP响应
#!/bin/bash
fakePhrase="verizon"
siteList=(
'http://google.com'
'https://google.com'
'http://wikipedia.org'
'https://wikipedia.org'
'http://cantgettherefromhere'
'http://searchassist.verizon.com'
)
exitStatus=0
function isUp {
http=`curl -sL -w "%{http_code}" "$1" -o temp_isUp`
fakeResponse=`cat temp_isUp | grep $fakePhrase`
if [ -n "$fakeResponse" ]; then
http=$fakePhrase
fi
case $http in
[2]*)
;;
[3]*)
echo 'Redirect'
;;
[4]*)
exitStatus=4
echo "$1 is DENIED with ${http}"
;;
[5]*)
exitStatus=5
echo "$1 is ERROR with ${http}"
;;
*)
exitStatus=6
echo "$1 is NO RESPONSE with ${http}"
;;
esac
}
for var in "${siteList[@]}"
do
isUp $var
done
if [ "$exitStatus" -eq "0" ]; then
echo 'All up'
fi
rm temp_isUp
exit $exitStatus
我相信cURL有一个禁用重定向的选项。当我调用一个“false”站点时,我个人将其解释为无效页面,在那里你会得到一个错误页面,我会得到响应代码404,我不会被重定向。到目前为止,我看不出您的问题是什么……您现在应该可以看到代码了,它与许多示例中的代码相同,因此我不知道为什么会出现此问题。我没有看到从
http://www.bnkbkvbirbcx.co.uk
至http://www.123-reg.co.uk
var\u dump($hr,curl\u getinfo($ch))代码>紧跟在$hr=curl\u exec($ch)之后代码>。给我们输出。将所有问题提交给您的ISP。我甚至找不到www.bnkbvbirbcx.co.uk
和bnkbvbirbcx.co.uk
的DNS记录。看起来他们实现了一些重定向系统,可以自动为不存在的域提供200个答案。无论我如何解决这个问题,事实仍然是,当我的网站上线时,很抱歉,将坚持这一点,简而言之-谢谢你,我需要在web服务器上测试,而不是在我的wamp上,现在看来很清楚,我的ISP正在妨碍我,谢谢大家。