1

ここで少し助けが必要です:

私は2つのファイルを持っています

  • index.php
  • form0.html

form0.html は自動的にフォームに入力して送信します。塗りつぶしに直行すると問題なく動作しますが、php スクリプトからアクセスしようとすると、結果を印刷しない限り機能しません。

PHP コード:

<?php

set_time_limit(30);
$delay_time = 2; // time to wait before looping again.
$loop_times = 1; // number of times to loop.
$url = array("http://localhost/htmlfile0.html");

for($x=0;$x<$loop_times;$x++)
{
    echo count($url);
    for($i=0;$i<count($url);$i++)
    {
        $url1=$url[$i];
        $curl = curl_init(); // Initialize the cURL handler

        $header = array();
        $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: 30000";
        $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.
        $var_host = parse_url($url1,PHP_URL_HOST);


        $cookieJar = 'cookies/'.$var_host.'.txt'; // change it according to your requirement. make dynamic for multi URL
        curl_setopt($curl, CURLOPT_HTTPHEADER, $header); // Browser like header
        curl_setopt($curl, CURLOPT_COOKIEJAR, $cookieJar);  // file for cookies if site requires
        curl_setopt($curl, CURLOPT_COOKIEFILE, $cookieJar); // file for cookies if site requires

        curl_setopt($curl, CURLOPT_HEADER, 0);
        curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9) Gecko/2008052906 Firefox/3.0');
        curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate');
        curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // Follow any redirects, just in case
        curl_setopt($curl, CURLOPT_AUTOREFERER, true);

        curl_setopt($curl,CURLOPT_RETURNTRANSFER, true); // set curl to return the page

        curl_setopt($curl, CURLOPT_POSTFIELDS, '');
        curl_setopt($curl, CURLOPT_POST, true); //post the form

        curl_setopt($curl, CURLOPT_URL, $url1); // Set the URL
        $ch=curl_exec($curl); // Display page                  
        curl_close($ch); // Close cURL handler

        echo date('h:i:s') . "\n";
        if($ch) echo "Success: ".$url1;
        else echo "Fail: ".$url1;
        echo '<hr>';
        sleep(5);
        echo date('h:i:s') . "\n";
    }
    if($x < $loop_times) sleep($delay_time);
}
?>

どうすればこれを通過できますか?

ありがとう。

4

1 に答える 1

0

私が間違っている場合は修正してください。ただし、少なくとも直接ではできない CURL リクエストを使用して JS を実行しようとしています。

ファイルに直接移動すると、正常に動作します-ブラウザーのJSインタープリターはJSを適切に実行し、フォームが送信されますが、cURLを使用することで何か違うことをしています-httpリクエストヘッダーを特定のURL(http://localhost/htmlfile0)に送信しています.html) であり、応答コンテンツを取得する場合と取得しない場合があります。

コンテンツを取得する (そしてブラウザの js インタープリターで JS を解析する) 場合、JavaScriptは正しい URL であるかどうかに基づいて正しいアクションを拒否するように設定されている可能性があります。

例:

正しい URL である場合は何らかのアクションを実行します- コードに到達した場合http://example.com/script.html

URL の上にない場合は何もしないでください。これは、cURL php スクリプトを使用してアクションを実行し、上記の URL にアクセスしてドキュメントのコードを に出力する場合ですhttp://localhost

于 2012-11-01T21:41:56.953 に答える