3

EasyPHP と PHP5 を実行している Windows 7 マシンでこのコード スニペットをテストしていますが、コードを実行してもコード 200 が返されます。存在しない URL を使用しているため、そうすべきではありません。これは、たとえばhttp://www.123-reg.co.ukへのリダイレクトが行われるためですか? それは私が疑っていることですが、それを回避する方法を見つけるのに苦労しています。

$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)
4

3 に答える 3

0

さて、ようやくこれの底に到達しました、私は今とても長い時間がかかったのは愚かだと感じています!私のISPは、次のように「便利な機能」に介入します。「入力したアドレスでサイトが見つからない場合、この便利な機能は間違ったアドレスをWeb検索に変換するため、エラーメッセージの代わりにリストが表示されます。私たちの最も近い一致の」。また、私が行ったこの便利な機能を「オフ」にすることを選択できることも発見しました。これで、期待どおりの結果が得られます。私の不安定な投稿のいくつかからわかるように、すべての入力に感謝します。私はstackoverflowに不慣れですが、私の問題を共有するのは良いことだと思いました。

于 2012-09-29T07:54:55.090 に答える
0

以下のスクリプトは、ここで検索を終了する人にとって役立つかもしれません。

fakePhrase は、ISP の「Search Assist」アドウェアの 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
于 2015-11-18T18:07:02.750 に答える
0

お使いのコンピューター/サーバーに別の DNS サーバーを設定することをお勧めします。プロバイダーが存在しないドメインをホームページにリダイレクトしているようです。

お使いのプロバイダの virginmedia はわかりませんが、ドイツのテレコムでは、ホームページでこのオプションを無効にするオプションがあります。

オプションは、8.8.8.8 および 8.8.4.4 経由でアクセス可能な、Google のようなオープン/無料の DNS サーバーを使用することです。

それが役立つことを願っています!

于 2012-09-29T05:48:07.823 に答える