13

CURLを使用してURLの存在を確認しています(HEADリクエスト)が、でテストするとwww.google.com、リダイレクトされますwww.google.co.uk-おそらく私のサーバーが英国ベースであるためです。

これを防ぐ方法はありますか?CURLOPT_FOLLOWLOCATIONこれは301リダイレクトなどに役立つため、このオプションを削除したくありません。

私のコードの一部は以下のとおりです。

$ch = curl_init();

    // set URL and other appropriate options
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_MAXREDIRS, 5);
    curl_setopt($ch, CURLOPT_NOBODY, true);
    curl_setopt($ch, CURLOPT_AUTOREFERER, true);
    curl_setopt($ch, CURLOPT_FORBID_REUSE, true);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 4);
    curl_setopt($ch, CURLOPT_TIMEOUT, 4);

    $output = curl_exec($ch);

    // get data     
$data = curl_getinfo($ch);

$data['url']私が設定しwww.google.co.ukたときに含まれています$urlwww.google.com

4

7 に答える 7

13

ブラウザで同様の動作をシミュレートするCookieでcurlを使用する必要があります。

イギリスからgoogle.comにアクセスすると、google.co.ukにリダイレクトされますが、そのページには「go to google.com」というタイトルのリンクがあり、google.comに戻ってそこにとどまることができます。それはあなたのサイトの好みを記憶するためにクッキーを使用します。

たとえば、これを行った後に(Firefoxを使用して)私が持っているCookieは次のとおりです。

代替テキスト

于 2010-02-01T14:26:14.907 に答える
12

アクセスwww.google.com/ncrしてみてください。.co.uk(またはその他の国内)ページへのリダイレクトが回避されます。

于 2010-02-01T14:27:30.170 に答える
4

もう 1 つのオプションは、単純に encrypted.google.com を使用することです。それはリダイレクトしません。

于 2012-11-07T09:36:19.507 に答える
1

ちょっとしたハックですが、IPアドレスを使うのはどうですか?http://216.239.59.147/ http://66.102.7.104/

于 2010-02-01T14:27:46.580 に答える
0

Googleが現在の国を決定しないようにする1つの方法は、別のIPアドレスを設定することです。Webから多くの米国のプロキシサーバーの1つを取得し、次のようにします。

$ch=curl_init();
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCTION,1); 
curl_setopt($ch,CURLOPT_PROXY,"8.12.33.159");
curl_setopt($ch,CURLOPT_PROXYPORT,"80");
curl_setopt($ch,CURLOPT_USERAGENT,"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3");
curl_setopt($ch,CURLOPT_URL,$URI);
$results=curl_exec($ch);
curl_close($ch);

このように、Googleは、あなたが米国のIPアドレスを形成し、ローカルのGoogleにリダイレクトされないと見なします。

于 2010-07-12T13:46:13.703 に答える
0

www.google.co.uk を直接使用できますが、違いはありません。google.com/.net は常にあなたの場所にリダイレクトされますが、.co.uk のような国の TLD を使用するとリダイレクトされません。

.com または .net を使用しているときにリダイレクトを防止する方法は (私にはわかっています) ありません。

于 2010-02-01T14:24:58.113 に答える
0

curl からのフォローの場所をオフにする (false に設定する) と、リダイレクトされなくなります ...

   curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
于 2010-11-24T23:50:04.663 に答える