2017-01-16 6 views
1

私はウェブページの小さな部分を読み込もうとしています。最初は問題がurlencodeだと思っていましたが、問題はまだ発生しています。ストリームを開くことに失敗しました:ウェブページでこのようなファイルやディレクトリがありません

スクリプトはgoogle.comのような単純なリンクから正常に読み取りますが、必要なリンクでは機能しません。

<?php 
     $link = "http://www.adidas.co.uk/nmd_r1-bape-camouflage-shoes/BA7326.html"; 
     $newlink = urlencode($link); 

     $linkcontents = file_get_contents($newlink); 
     $needle = "Sold out"; 
     if(strpos($linkcontents, $needle) == true){ 
      echo "String found"; 
     } else{ 
      echo "String not found"; 
     } ?> 
+0

'urlencode'を使う必要はありません –

+0

私はあまりにもそうだと思っていましたが、それでもやはり違うエラーが発生します。 HTTP/1.0 403禁止: " – bsaid97

答えて

2

イム私はコードの下にこれをしなかったので、私の答えを変更:

$link = "http://www.adidas.co.uk/nmd_r1-bape-camouflage-shoes/BA7326.html"; 

// create curl resource 
$ch = curl_init(); 

// set url 
curl_setopt($ch, CURLOPT_URL, $link); 

// $output contains the output string 
$output = curl_exec($ch); 

die(var_dump($output)); 

、それは私に、あなたはあなたができない

をブロックされている

申し訳ありませんが、この応答を与えましたこのウェブサイトにアクセスするには

なぜブロックされましたか?

このウェブサイトは、オンライン 攻撃から自分自身を守るためにセキュリティサービスを使用しています。実行したアクションによってセキュリティのセキュリティ がトリガーされました。このブロックをトリガーするアクションはいくつかありますが、特定の語句、SQLコマンド、または の不正なデータの送信を含む、 があります。

これを解決するにはどうすればよいですか?

あなたが個人的な接続である場合は、自宅のように、あなたはそれが マルウェアに感染していないことを確認するために、デバイス上の アンチウイルススキャンを実行することができます。

オフィスまたは共有ネットワークにいる場合、ネットワーク の管理者に、 が誤って設定されているか感染しているデバイスを探してネットワーク経由でスキャンを実行するよう依頼できます。

HTTP 403 - 「

禁断あなたがAddidasのウェブサイト上の任意のウェブスクレイピングを行うことができないようだ

+0

ありがとうございました!私は前にcURLを使用したことがないので、それを使用する必要があります。とにかく、ありがとう! – bsaid97

+0

@ bsaid97問題はありません。あなたが本当にaddidasのウェブサイトを使用する必要があるのであれば、あなたはそのAPIを使って後で情報にアクセスすることができると思います:https://developers.adidas.com/ |あなたが少し混乱することができる前にAPIを使用したことがないなら、ちょっとしたリサーチでうまくいくはずです! –

0

あなたはurlencodeを必要としない

あなたがしようとしているサイト。アクセスは403 Forbiddenで応答します。

file_get_contents(http://www.adidas.co.uk/nmd_r1-bape-camouflage-shoes/BA7326.html): failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden 

file_get_contentsは、サイトの観点から適切に形成された要求を送信しません。

あなたは、このようなとしてをがつがつ食うカールまたは別の要求ツールを使用して、あなたがこすりしようとしているサイトによって理解され、適切に形成され、要求を送信する必要があります(例:それはする必要がありますので、デフォルトでいくつかのヘッダを送信しますがつがつ食います作業)。

0

リモートホストが有効なヘッダー情報(ユーザーエージェントなど)のない接続を除外している可能性があります。

あなたはstream contextを作成することにより、(通常はより良いこれらの事のためのcURLを使用する)、それを偽装することができます

$opts = array(
    'http'=>array(
    'method'=>"GET", 
    'header'=>"Accept-language: en\r\n" . 
       "Cookie: foo=bar\r\n" . 
       "User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2228.0 Safari/537.36\r\n" 
) 
); 

$ctx = stream_context_create($opts); 

$content = file_get_contents($url,false,$ctx); 

免責事項:これは、HTMLを返すには、リモートホストがこれらのチェックを入れているという事実を働くかもしれないがこれを行うことは、利用規約に違反することを示す可能性があります。あなたのIPがブラックリストに載っていれば、私を責めないでください。

関連する問題

 関連する問題