3

いくつかの JavaScript を作成し、サード パーティのドメインから読み込んでいるページの DOM を呼び出すようにしたいと考えています。これはできますか?これは私がすでに試したもののように見えますIFRAMEが、うまくいかないようです。これらは、ページの一部としてではなく、FF に何らかの JavaScript を直接実行させるような別の方法ですか?

これにはあらゆる種類のセキュリティ上の問題があることはわかっていますが、コードを書いているのは私であり、コードを実行するのは私だけです。


裏話: Web サイトのいくつかの繰り返しを自動化しようとしています。

の Web ページが のページと同じドメインにないため、最初IFRAMEのパスが機能しませんでした。びっくり、びっくり。file:////....http://whatever.com

4

8 に答える 8

4

私が質問を正しく理解していれば、あなたが経験したドメイン制限のために、Javascriptだけを使用してそれを行うことはおそらくできないでしょう。ただし、シェルスクリプトやスクリプト言語の使用についてある程度の知識がある場合は、問題はありません。必要なのは、古き良きカールを呼び出すことだけです。

PHPの例:

<?php
$url = "http://www.example.com/index.html";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0');
$fp = curl_exec($ch);
curl_close($ch);
?>

そして、それはほとんどそれです。$fp変数に実際のHTMLコードがあります。したがって、全体として、私が行うことは、PHPに小さなJavascript Ajax関数を記述して、カールを実行し、echoを介してJavascriptコールバックに$ fp変数を返し、それをドキュメントに挿入することです(innerHTMLまたはDOM)、そしてbam、あなたはすべてのものにアクセスできます。または、PHPで解析することもできます。いずれにせよ、カールを介してそれを行う場合は正常に動作するはずです。お役に立てば幸いです。

編集:少し考えた後、Safariがローカルホストのクロスドメイン制限を削除したことを覚えているようです。さらに調査した後、この私の理論をサポートするドキュメントを見つけることができなかったので、少し深く掘り下げて、Apacheを使用している場合は、Apacheを介してこの混乱全体を達成するためのより良い(ハッカーではありますが)方法を見つけました(あなたはおそらくそうです)。

Apacheのmod_proxyは、「/ foo」などのリクエストを受け取り、実際には「<a href="http://dev.domain.com/bar" rel="nofollow noreferrer"> http:」などのリモート宛先にリクエストをトンネリングします。 //dev.domain.com/bar」。その結果、Webブラウザはhttp:// localhost / fooを呼び出したと見なしますが、実際にはリモートサーバーからデータを送受信しています。セキュリティへの影響が解決されました!

例:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule rewrite_module modules/mod_rewrite.so

http://dev.domain.com/remote/api.phpにあるファイルにアクセスしたいとします。次のすべてを:に入れます。

# start mod_rewrite
RewriteEngine On
ProxyRequests Off
<Proxy>
   Order deny,allow
   Allow from all
</Proxy>

ProxyPass /apitest/ http://dev.domain.com/remote/api/
ProxyPassReverse /apitest/ http://dev.domain.com/remote/api/
RewriteRule ^/apitest/(.*)$ /remote/api/$1 [R]

ソース

さらに編集:

サーバー全体のセットアップを回避する方法として、Safari(Mac)でIFRAMEを使用してショットを作成しました。少なくとも、試したドメインでは機能しました。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html>
<head>
</head>
    <body>
        <iframe src="http://www.stackoverflow.com/"></iframe>
    </body>
</html>
于 2009-01-14T06:30:34.087 に答える
3

ブックマークレットを読んでください。基本的な考え方は、ブラウザに現在読み込まれているページに動的に Javascript を挿入する Javascript コードを実行するブックマークを作成することです。ほとんどの Web ページ クリッピング アプリケーションはこれを行います。

于 2009-01-14T02:03:23.720 に答える
1

SeleniumRemote-Controlを見てください。サーバーは、同じドメインポリシーをバイパスするために、ブラウザのプロキシとして機能します。

最後に、Seleniumサーバーはクライアント構成のHTTPプロキシとして機能し、ブラウザーとWebサイトの間に立ちます。これにより、Selenium対応のブラウザーで任意のWebサイトでJavaScriptを実行できます。

同じアプローチを適用して、独自のプロキシを作成したり、他のドメインのページをエコーする単純なWebアプリを作成したりすることを検討してください(Daveの回答を参照)。

または、自動化にSeleniumを使用するだけです。

于 2009-01-14T06:34:14.300 に答える
1

Firefox のドメイン セキュリティを緩和する方法があります。

1 この行を Firefox の user.js に追加します。

user_pref("signed.applets.codebase_principal_support", true);

2 ドメインを越える必要があるすべての JavaScript 関数にこの行を追加します。

netscape.security.PrivilegeManager.enablePrivilege( "UniversalBrowserRead UniversalBrowserWrite" );

3 Firefox が初めてドメインを横断しようとすると、警告が表示され、許可を求めるプロンプトが表示されます。

朗報です。これが Firefox 3 で機能しない原因となっていたバグは修正されたようです。

于 2009-01-14T06:50:26.543 に答える
1

JavaScript にも同じドメイン ポリシーがあります。他のドメインにアクセスできなくなります。ハッカーや悪人から身を守るためです。

于 2009-01-14T02:02:58.650 に答える
0

私が考えていたものではありませんが、iMacrosは私が望むことのいくつかを行うかもしれません。

見た後、それは少し制限されているように見え、ドキュメントは少しキラキラしていて、十分な肉ではありません。

于 2009-01-14T06:23:46.270 に答える
0

http://en.wikipedia.org/wiki/JSONP#JSONP

于 2010-03-22T18:02:14.173 に答える
0

問題を完全に理解しているかどうかはわかりませんが、状況をもっと説明できるかもしれません....しかし、ドメイン間でアクセスしている場合、クロスサイトスクリプティングのセキュリティ問題が発生していると思います。

そう..

おそらくdocument.domain、ほとんどのブラウザでウィンドウ オブジェクト間でスクリプト アクセスを有効にできるプロパティをチェックアウトしてください。

document.domain両方のサイトは同じメイン ドメイン経由でアクセスする必要がありますが、両方のサイトで がドメインの「メイン」部分に設定されている限り、異なるサブドメインを持つことができます。

于 2009-01-14T02:06:30.937 に答える