2009-07-07 9 views
2

ログイン画面の背後に隠れたページにアクセスできるプロキシスクリプトを作成する必要があります。プロキシをログインする必要はありません。代わりにログインページのHTMLをユーザに通常表示し、すべてのクッキーとHTTP GET/POSTデータをプロキシを経由してサーバに送信する必要があります。本物。私は、ログイン/パスワードを使用しないシンプルなPHP透過プロキシを作成するにはどうすればよいですか?

、私だけで伐採後を生成されたページのHTMLソースコードにアクセスする必要があります。

ここに誰もがこれを行うことができる方法を知っていますか?易しいですか?

ていない場合は、どこで始まるのですか?*(私は現在、PHPを使用しています)*

答えて

1

あなた自身を認証する必要のあるページにアクセスしている何のことをいっています。

  • あなた自身を認証することなく、それらのページを表示することはできません。ここで

    が敷設されなければならないいくつかのことです。

  • ウェブサイト(HTMLコードを見たい)が認証方法としてWebログインのみをサポートしている場合は、POST/GET経由で(ユーザ名、パスワード)を送信してログインをシミュレートする必要があります。
  • ウェブサイトは、あなたがキーポイントは、あなたが最初に自分自身を認証なしでアクセスを得ることができないということです

ことを行う必要があり、あなたは(LDAP、Kerberosのなどのような)他の方法で自分自身を認証できるようになる場合。

言語は、PHPでかなり可能です。そして、質問のタグが示唆するように、あなたはその仕事をするのに適切なツールを使用しています。

私が知りたいことは、なぜそれを「プロキシ」と呼んでいるかということです。他のユーザーにコンテンツを提供しますか?

EDIT: [コメントの後に更新]

その場合、phproxyを使用します。それは、他の多くの機能と一緒に、あなたが望むものを行います。

+0

私はあなたが少し混乱していると思います。私のプロキシスクリプトは、ログインページにGET/POSTデータを入力することで自動的にログインするのではなく、(1)元のログインページのHTMLをプロキシの訪問者に透過的に表示する(2)訪問者は自分のユーザー名/ 3)私は干渉しないように、リクエストデータより元のログインサーバーに転送します。 –

+0

ああ回答が更新されました。 – jrharshath

0

Curl(php.iniで起動する必要があるかもしれないPHPライブラリ)をお勧めします。 これは、リモートWebサイトを操作し、クッキーと必要なすべてのhttpパラメータを処理するために使用されます。 あなたが当てているウェブページに基づいてプロキシを書く必要がありますが、それは仕事をするでしょう。

+0

ログイン要求が特定の参照ページから来ることを期待している場合は、認証で問題が発生する可能性がありますので、curl – bumperbox

3

あなたのPHPスクリプトがあなたが望むURLを要求して、すべてのリンクとフォームアクションをPHPスクリプトを指すように書き直してください。スクリプトにURLパラメータを持つリクエストを受信すると、そのパラメータをリモートサーバーに転送して繰り返します。ユーザータイププロキシフォームにhttp://example.com/login.php

あなたは

例:(あなたの「プロキシ」のJavaScriptの部分を実装していない限り)、すべてのJavaScriptの要求をキャッチすることができません。

は、パラメータ http://yoursite.com/proxy.phpで " http://example.com/login.php"

をURLENCODEしてください、あなたはhttp://example.com/login.php

$url = $_REQUEST['url']; 

// make sure we have a valid URL and not file path 
if (!preg_match("`https?\://`i", $url)) { 
    die('Not a URL'); 
} 

// make the HTTP request to the requested URL 
$content = file_get_contents($url); 

// parse all links and forms actions and redirect back to this script 
$content = preg_replace("/some-smart-regex-here/i", "$1 or $2 smart replaces", $content); 

echo $content; 

なお/いくつかのスマートへのHTTPリクエストを行うhttp://yoursite.com/proxy.php?url=http://example.com/login.php

にユーザーを送ります-regex-here/iは実際にはリンクなどを解析するために書くべき正規表現です。

この例では、HTTP Bodyをプロキシしているだけで、HTTPヘッダーをプロキシすることができます。 PHP5 +(stream_socket_client()など)でfsockopen()やPHPストリーム関数を使用することができます。

+4

を使用している場合は、これを考慮してローカルファイルにアクセスしてください。 /proxy.php?url=/etc/passwd –

+1

本当です! ^^ file_get_contentsの代わりにcurlまたはfsockopenを使用してください。または、$ urlをサニタイズします。 – bucabay

+0

固定のためにありがとう、-1 - > +1 –

2

http://code.google.com/p/php-transparent-proxy/をチェックアウトできました。私は正確に同じ質問をしていたので、作成しました。 BSDライセンスの下にありますので、楽しみましょう:)

+0

私はファイルでそれを使用しようとしましたが、うまくいきませんでした。スクリプトを使用してファイルをアップロードすることができません。投稿と取得制限のためだと思います。私は間違っていますか?画像でも使用できますか?質問を投稿[こちら](http://stackoverflow.com/questions/14832334/create-a-http-proxy-in-php-for-uploading-images-using-iframe/14834851#comment20815984_14834851) – coderunner

関連する問題