ホームページ >バックエンド開発 >PHPチュートリアル >PHPカールパケットキャプチャの問題

PHPカールパケットキャプチャの問題

WBOY
WBOYオリジナル
2016-06-23 13:45:081065ブラウズ

Web ページのドキュメント、成績、授業スケジュールをキャプチャするために、curl を使用します。ただし、キャプチャは機能せず、500 エラーが報告されます。
これは、httpwatch パケット キャプチャ ツールを使用してキャプチャされたページです。

これはキャプチャされるインターフェースです。データはポストを通じて送信されます
rrree
PHP コード

エラー報告インターフェース


ディスカッションへの返信 (解決策)

最初: CURLOPT_REFERER で試してください、相手は相手です正しいですか? ページのソースを特定することは可能です

2 番目: 相手のログイン ページに非表示のパラメータがあるか? その場合、送信する前にログイン ページにアクセスして非表示の値を取得する必要があります
3 番目: わかりませんでしたログイン アカウントとパスワードを送信した場所

$url = "http://202.117.64.25/loginAction.do"

$fields = "dllx=dldl&zjh=201224080126"; ;
これはアカウントとパスワードを送信するためのものです。
CURLOPT_REFERER 何を追加しますか?
bbf0743802d6f667baf0320a52f941e5 b16339706af7664b4051e9aa503cd777
隠しパラメータが 2 つ見つかりましたが、役に立たないようです

1 つ目: CURLOPT_REFERER を使用して、相手がページのソースを特定している可能性があるかどうかを確認します

2 つ目: 相手のログイン ページが非表示になっているかどうかパラメーター (ある場合) その場合、最初にログイン ページにアクセスして非表示の値を取得してから送信する必要があります
3 番目: ログイン アカウントとパスワードを送信した場所がわかりませんでした。ここに投稿したアカウントとパスワードです

$url = "http://202.117 .64.25/loginAction.do";
$fields = "dllx=dldl&zjh=201224080126&mm=201224080126";
これはアカウントとパスワードを送信するためのものです。
CURLOPT_REFERER 何を追加しますか?
bbf0743802d6f667baf0320a52f941e5 b16339706af7664b4051e9aa503cd777
2 つの隠しパラメータが見つかりましたが、役に立たないようです
あなたのためにテストしました。ログインに問題はありません。正常にログインしました。主な問題は、2 番目に要求したパラメータにありますさらに、JAVA からのこのエラー メッセージがわかりません。

ログインに問題はありません。主な問題は 2 番目のリクエストのパラメータにあり、さらに 2 番目のページのパラメータを取得します。この JAVA エラーはよくわかりません。

うまく掴めましたか?
助けてください、何が起こっているのですか? ? ?

プロセスとコードに問題があります。正しいプロセスは次のとおりです:

1. http://202.117.64.25/
にアクセスして Cookie を取得します。彼のセッション ID はこのページで送信されたためです
2. http://202.117.64.25/loginAction.do にアクセスして投稿フォーム データを送信します
3. ステップ 2 ではフレーム ページが返されます。必要に応じてフレームを入力する必要があります
たとえば、http://202.117.64.25/menu/s_top.jsp にアクセスして、ログイン情報を取得してください: ようこそ Huang Xiaolong
テスト コード

<html>	<head>		<meta charset=gbk>	</head>	<body>		<form action="" method="post">		学号:<input type="text" name="user">		<br>		密码:<input type="password" name="password">		<br>		<input type="submit" name="login" value="登录">		</form>	</body><?php	if(isset($_POST["login"])) {	$login = $_POST["user"];	$password = $_POST["password"];	$url = "http://202.117.64.25/loginAction.do";	$fields = "dllx=dldl&zjh=201224080126&mm=201224080126";	$cookie1 = "D:\wamp\www\cookielogin.txt";	$cookie2 = "D:\wamp\www\cookie.txt";	$ch = curl_init();	curl_setopt($ch, CURLOPT_URL, $url);	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);	curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);	curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)");	curl_setopt($ch, CURLOPT_POST, 1);	curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);	curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie1);	curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);	$result = curl_exec($ch);	curl_close($ch);	$url = "http://202.117.64.25/xszxcxAction.do?oper=tjcx";	$fields = "zxxnxq=2014-2015-1-1&zxXaq=0&zxJxl=0011&zxZc=1&zxJc=1%2C2&zxxq=1&pageSize=20&page=1&currentPage=1&pageNo=1";	$ch = curl_init();	curl_setopt($ch, CURLOPT_URL, $url);	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);	curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1);	curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)");	curl_setopt($ch, CURLOPT_POST, 1);	curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);	curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie1);	curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);	$result = curl_exec($ch);	echo $result;}?></html>

curl_get.php
<xmp><?phpinclude 'curl/curl_get.php';$url = 'http://202.117.64.25/';curl_get($url);$url = "http://202.117.64.25/loginAction.do";$d = 'dllx=dldl&zjh=201224080126&mm=201224080126';curl_get($url, $d);echo curl_get('http://202.117.64.25/menu/s_top.jsp');echo curl_get('http://202.117.64.25/menu/mainFrame.jsp');echo curl_get('http://202.117.64.25/xsxxviewAction.do');

プロセスとコードに問題があります。正しいプロセスは次のとおりです:

1. http://202.117.64.25/
にアクセスして Cookie を取得します。彼のセッション ID はこのページで送信されたためです
2. http://202.117.64.25/loginAction.do にアクセスして投稿フォーム データを送信します
3. ステップ 2 ではフレーム ページが返されます。必要に応じてフレームを入力する必要があります
たとえば、http://202.117.64.25/menu/s_top.jsp にアクセスして、ログイン情報を取得してください: ようこそ Huang Xiaolong
テスト コード

<?phpfunction curl_get($durl, $data=array()) {  $cookiejar = realpath('cookie.txt');  $t = parse_url($durl);  $ch = curl_init();  curl_setopt($ch, CURLOPT_URL,$durl);  curl_setopt($ch, CURLOPT_TIMEOUT,5);  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);  curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);  curl_setopt($ch, CURLOPT_REFERER, "http://$t[host]/");  curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiejar);  curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiejar);  curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);  curl_setopt($ch, CURLOPT_ENCODING, 1); //gzip 解码  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);  if($data) {    curl_setopt($ch, CURLOPT_POST, 1);    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);  }  $r = curl_exec($ch);  curl_close($ch);  return $r;}

curl_get.php
<xmp><?phpinclude 'curl/curl_get.php';$url = 'http://202.117.64.25/';curl_get($url);$url = "http://202.117.64.25/loginAction.do";$d = 'dllx=dldl&zjh=201224080126&mm=201224080126';curl_get($url, $d);echo curl_get('http://202.117.64.25/menu/s_top.jsp');echo curl_get('http://202.117.64.25/menu/mainFrame.jsp');echo curl_get('http://202.117.64.25/xsxxviewAction.do');

ありがとうございます。うまくいきましたが、まだうまくいきません。なぜだかわかりませんか?
これが私の最終的なコードです
すごいです
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。