0

対応する投稿をリロードせずに、コメントの動的更新/非表示/表示に ajax を使用する Web ボードをクロールする必要があります。私はこのコメント欄にブロックされています。

Ajax.request では、url は次のようにホスト名なしのパスで指定されます。

new Ajax(**'/bbs/comment_db/load.php'**, {
    update       : $('comment_result'), 
    evalScripts  : true, 
    method       : 'post', 
    data         : 'id=work_gallery&no=i7dg&sno='+npage+'&spl='+splno+'&mno='+cmx+'&ksearch='+$('ksearch').value,
    onComplete   : function() {
        $('cmt_spinner').setStyle('display','none');  
        try { 
            $('cpn'+npage).setStyle('fontWeight','bold'); 
            $('cpf'+npage).setStyle('fontWeight','bold');
        } catch(err) {} 
    }
}).request();

完全なホスト名で URL にアクセスしようとすると、「アクセス許可エラー」というメッセージが表示されます。

new Ajax(**'http://host.name.com/bbs/comment_db/load.php'**, {
    update      : $('comment_result'), 
    evalScripts : true, 
    method      : 'post', 
    data        : 'id=work_gallery&no=i7dg&sno='+npage+'&spl='+splno+'&mno='+cmx+'&ksearch='+$('ksearch').value,
    onComplete  : function() {
        $('cmt_spinner').setStyle('display','none');  
        try { 
            $('cpn'+npage).setStyle('fontWeight','bold'); 
            $('cpf'+npage).setStyle('fontWeight','bold');
        } catch(err) {} 
    }
}).request();

同じエラーになります。

これは、Web ブラウザーで実際の php の URL を次のように呼び出しても同じです: http://host.name.com/bbs/comment_db/load.php ?'id=work_gallery&..'

php モジュールは、同じホスト内の URL によって呼び出されるように制限されていると思います。

このデータをクロールするためのアイデアはありますか?

前もって感謝します。

- すね

4

4 に答える 4

1

クロスサイト XMLHttpRequest は、ほとんどのブラウザーで禁止されています。異なるサイトをクロールする場合は、サーバー サイド スクリプトで実行する必要があります。

于 2009-02-07T09:41:35.033 に答える
1

darin が述べたように、XMLHttpRequest オブジェクト (Ajax リクエストの本質) には、クロスサイト HTTP リクエストの呼び出しに関するセキュリティ制限があります。これは「JavaScript の同一生成元ポリシー」と呼ばれていると思います。

W3C 内には、クロスサイト リクエストに対する新しいアクセス コントロールの推奨事項を提案したワーキング グループがありますが、この制限は、ほとんどのメインストリーム ブラウザで依然として有効です。

Mozilla Developer Networkで、より適切な説明が得られる情報を見つけました。

あなたの場合、Ajax.Request が Ajax リクエストに XMLHttpRequest オブジェクトを引き続き使用する Prototype JavaScript フレームワークを使用しているようです。

于 2009-02-08T09:44:51.173 に答える
0
method:'post'

あなたの問題かもしれません.リクエストを処理するホストはgetリクエストを拒否する可能性が高く、ブラウザのアドレスバーからそれを投げることができます. これが起こっている場合は、ジョブを実行できる何らかの種類のスクリプト ツールを見つけるか、インストールする必要があります (perl を選択します。Windows を実行していない場合は、既にそれを使用しているはずです)。

ただし、あなたがやろうとしていることは合法かどうか疑問に思う必要があります。通常、他のサイトのコメント データベースをトロールすることは推奨されません。

于 2009-02-07T07:59:58.983 に答える
0

これを解決するには、外部ページからのクロールを行う PHP スクリプトをローカルで実行します。そうすれば、jQuery は外部ドメインに移動する必要がなくなります。

于 2010-10-04T00:54:48.793 に答える