ホームページ  >  記事  >  バックエンド開発  >  緊急: snoopy を使用して EMS 検証コードを取得し、追跡番号をリモートでシミュレートしますが、JSessionID を取得できませんか?

緊急: snoopy を使用して EMS 検証コードを取得し、追跡番号をリモートでシミュレートしますが、JSessionID を取得できませんか?

WBOY
WBOYオリジナル
2016-06-23 14:14:481547ブラウズ

メンバーの life169 は、以前に PHP セクションに (snoopy を使用して EMS 検証コードをキャプチャし、リモートでクエリ番号をシミュレートし、クエリ結果を取得する) という記事を投稿しました
リンクは次のとおりです: http://topic.csdn.net/u /20100715/ 23/d58f2006-40ea-4cab-82e3-3bbcf4cd1e9f.html


しかし、テスト中によく問題が発生しました。

session_start()
include("Snoopy.class .php") );
$url = "http://www.ems.com.cn/qcgzOutQueryNewAction.do?reqCode=gotoSearch";
$url2 = "http://www.ems.com.cn/qcgzOutQueryNewAction.do";

$snoopy = new Snoopy;
$snoopy->fetch($url); // すべてのコンテンツを取得
print_r($snoopy->headers);
Array ( [0] => HTTP/1.1 200 OK [1] => コンテンツタイプ: charset=GB2312 [2] => サーブレット/2.4 JSP/2.0 [3] => -範囲: バイト [4] => 接続: 閉じる [5] => 日付: 2011 年 3 月 15 日 11:24:53 GMT [6] => 年齢: 1876 [7] = > : 22804 )

正しい戻り情報は次のようになります:
Array ( [0] => HTTP/1.1 200 OK [1] => Cache-Control: no-cache="set-cookie" [2] => ; 接続: 閉じる [3] => 日付: 2011 年 3 月 11 日金曜日 07:42:04 GMT [4] => コンテンツ タイプ: text/html [5] => JSESSIONID=N5SMs1dMW1Wy8LJ48Z1ZhP1p2kS1GSgY5twTNxcYpz1MvgYZk0LQ!195316506; path=/ [6] => X-Powered-By: Servlet/2.4 JSP/2.0 )

前の戻り値には JSESSIONID がありません。したがって、後続のクエリでは返されません。 2 日間結果を調べましたが、インターネットで多くの情報を検索しましたが、まだ手がかりがありません。ブラウザで ems.php ページを開き、その後ページを更新すると、奇妙な現象が発生します。その間、正しいページ情報が返されますが、しばらくすると正しく返されなくなるのはなぜですか? 何が起こっているのか教えていただければ幸いです。緊急



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

Baidu で ems クエリを確認しましたが、多くの接続がクエリできないと苦情を申し立てました。

したがって、ems はパブリック クエリ サーバーに資金を費やしていないのではないかと思われます。負荷が高いと、サーバーは苦労します。


サーバーの問題であるはずです。

この問題に対する解決策はありませんか?その具体的な理由は何ですか? Snoopy を使用せずに Firefox ブラウザから直接 EMS Web サイトにアクセスし、ツールを介して COOKIE を確認すると、実際には JESSIONID が生成されることがありますが、これができないのはなぜでしょうか。スヌーピーはどうですか?

ライフ169。もう一度この質問に答えていただけませんか?

昨日、私も Firefox でしばらくテストしましたが、幸いなことに、連続更新後にセッション ID をキャッチできました

前に言及したこの現象に遭遇しましたが、まだ解決策がありません。


カールを使用すると、スヌーピーよりもはるかに安定していて強力です。 csdn に私のソース コードがあります

こんにちは、curl について書いた特定の記事へのリンクを教えていただけますか?見つかりませんでした

また、スヌーピーに実装されているEMSクエリ機能もCURLを使って実装できますか?投稿の中で、CURL でテストが成功したと述べているようですが、参考のためにソース コードを提供していただけますか。

私のメールアドレス: 59325460@qq.com

あなたのメールアドレスに送信されました

life169、ありがとうございます。ソースコードを受け取りましたが、CURL を使用したテスト中、正しいデータはまだ返されません。 「ページに長時間滞在しすぎたため、電子メール クエリ フラグが失われています。クエリ ページを更新してください。

何が起こっているのかわかりません。引き続きアドバイスをお願いします。」

さて、以前作成したコードはもう使用できません

ems のクエリアドレスが変更されました、

送信にはさらに 2 つのデータが必要です

reqCode verifyBASE
myEmsbarCode 7967913886707
mailNum EE082209212CS
E4E5AFF69 4E 4FAD581D8FC8 vpc9
最適化。 x 15
optijiaot. y 13

これは、js によって生成されているようで、元のファイルでは見ることができません。

では、CURL を通じてコン​​テンツを正しく取得できるようにするには、今何を変更する必要がありますか? Snoopy が JSESSIONID を取得できれば、データを正しく取得できます。

教えていただいたソースコードに何か変更する必要はありますか?

以前にクエリアドレスを変更したことがありますが、Snoopy を介して正しくクエリできる場合があるので、CURL が失敗していることがわかります。
新しく追加された 2 つの送信に必要なデータは密接に関連していないため、テスト時に他の要素を設定する必要がある可能性があります。
testcookiebb.txt ファイルのみを生成することはできません。私はこれまでに CURL をプレイしたことがありません。life169 がこの問題の解決に役立つことを願っています。 。 。



さて、今はちょっと忙しいので、今夜コードの完全版をお送りします

さて、life169 さん、ほぼ 3 日間この問題に取り組んできました。ちょっとおかしい。

life169 さん、コードの完全版の準備はできていますか?

それでは、ここからダウンロードしましょう

http://download.csdn.net/source/3100240

ありがとうございます。まずテストしてみます。

テストは完了しました。完璧です。EMS データを正しく安定して収集できます。 life169さん、本当に助かりました。

life169 こんにちは、ダウンロードしたプログラムでエラーが発生しました。pangz@sohu.com ありがとうございます


sea1126 こんにちは、実行できたコードを送っていただけますか。結果はエラーです。ありがとうございます、

pang@sohu.com

さて、ここからダウンロードしましょう


http://download.csdn.net/source/3100240

こんにちは、life169 さん、コードは正常にテストされました。しかし、さらに一歩進んで、確認コードを入力するステップを回避することはできますか?このプログラムの確認コードを入力する必要があります。

ありがとうお兄さん

送ってもらえますか?これがとても必要なんです。 fob001@qq.com

コピーを送っていただけますか?これも必要です、ありがとうございます

yuxianhua@vip.qq.com

bilwy@vip.qq.com も必要です 誰が私にコピーを送ってくれますか

5 ポイント、貧しい人はそれを買う余裕がありません、私に送ってくださいコピーでいいですか? 1991753135@qq.com、ありがとうございます

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