2

このコードはローカル サーバーでは正常に動作しますが、ライブ サーバーでは動作しません。
ブロックされずにスクラップしようとしています。

プロキシがリモート サーバーによってブロックされた場合、ローカル サーバーで動作しているのはなぜですか?

function curl_se($set_url,$proxy){

    $ch = curl_init($set_url);
    //set options
    $header[0] = "Accept: text/xml,application/xml,application/xhtml+xml,"; 
    $header[0] .= "text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"; 
    $header[] = "Cache-Control: max-age=0"; 
    $header[] = "Connection: keep-alive"; 
    $header[] = "Keep-Alive: 300"; 
    $header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7"; 
    $header[] = "Accept-Language: en-us,en;q=0.5"; 
    $header[] = "Pragma: "; //browsers keep this blank.
    //set options
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
    curl_setopt($ch, CURLOPT_USERAGENT,"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3");
    curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate'); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 0);
    curl_setopt($ch, CURLOPT_PROXY, $proxy);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    $result = curl_exec($ch);
    echo "<pre>";
    print_r(curl_getinfo($ch));
    echo "</pre>";
    if(curl_errno($ch))
        return false;
    else
        return $result; 
}

curl リクエストごとに 1 つのプロキシをループします。

$proxy = array(
    "91.83.216.186:8081",
    "190.116.88.11:8080",
    "117.102.9.116:8080",
    "188.165.4.38:3128",
    "187.120.209.10:8080",
    "190.186.50.32:3128",
    "190.108.83.30:8080",
    "190.130.230.149:8080",
    "130.180.18.24:8275",
    "178.33.181.120:8080"
);

ライブ サーバーで curl エラー 7 (CURLE_COULDNT_CONNECT) が発生します。

私は立ち往生しています、それはローカルで正常に動作する同じコードの同じURLです。

更新:プロキシと関係があることがわかりました。私は何百ものものを試しましたが、ライブサーバーでカールエラー7を取得しているものはありません。さまざまなウェブサイトの URL も試しました。同じプロキシと URL がローカル サーバーで動作している間。

4

1 に答える 1

1

作業プロキシを試してください。ここ (codepad.viper-7.com/xzm8Au) でサーバーが正常に動作していることを確認してください。
匿名プロキシを使用すると、リモート (宛先) サーバーは実際の IP を認識したりブロックしたりできなくなります。

于 2012-10-24T07:11:21.793 に答える