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

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

WBOY
リリース: 2016-06-23 13:45:08
オリジナル
1062 人が閲覧しました

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 何を追加しますか?
 
隠しパラメータが 2 つ見つかりましたが、役に立たないようです

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

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

$url = "http://202.117 .64.25/loginAction.do";
$fields = "dllx=dldl&zjh=201224080126&mm=201224080126";
これはアカウントとパスワードを送信するためのものです。
CURLOPT_REFERER 何を追加しますか?
 
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');
ログイン後にコピー
ログイン後にコピー

ありがとうございます。うまくいきましたが、まだうまくいきません。なぜだかわかりませんか?
これが私の最終的なコードです
すごいです
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート