ホームページ >バックエンド開発 >PHPチュートリアル >PHPカールには検証コードがあり、ログインの問題をシミュレートします
最近 PHP を勉強したので、学校の学業管理システムにログインして情報を取得したいのですが、認証コードの渡し方がわかりません
210.44.176.133/(0qus0s55gb1ojp45n2h0sr55)/Default2.aspx
///
フォーラムにもアクセスしてください 優秀な人がアドバイスをくれます
検証コードは、人間の肉認識か機械認識のどちらかであり、検証コードの特性に応じて処理する必要があります。人体を入力して送信し、それを持ってくる必要があります
認証コードがある場合は、認証コードを識別する必要があります。相手が複雑なものに変えてしまう以上、どうすることもできません。
認証コードは人間の肉か機械の認識のどちらかです。機械の認識は認証コードの特性に応じて処理する必要がありますが、人間の肉は入力して送信し、クッキーを持ってくる必要があります。肉を入力すると、検証コードが取得されました。投稿すると、ここに移動されたオブジェクトが返されます。Baidu で調べたところ、リダイレクトで止まっているとのことでした。ここでどう対処すればいいのかわかりません。
人間の入力が必要です。検証コードは取得されており、投稿すると、ここに移動されたオブジェクトが返されます。
Baidu は、リダイレクトでスタックしていると言いました。どう愛してよいかわかりません。混乱しています。ここで、どう対処すればいいのかわかりません。
CURLOPT_FOLLOWLOCATION これを 1 に設定しましたか?
設定が消えています。不正なリクエスト (無効な番号) です。 何が問題ですか?
渡した番号が不正であるかどうかを確認してください。
分析のためにコードを投稿するのが最善です。
分析の結果、実際のログイン アドレスは 210.44.176.133 であることが判明し、アドレス 210.44.176.133/(0qus0s55gb1ojp45n2h0sr55)/Default2.aspx にリダイレクトされます。中央の括弧内はランダムであり、毎回異なります。さて、リダイレクトされたアドレスを取得するにはどうすればよいでしょうか?
これは私が書いた方法です
function curl_get_url(){ $cookie_file=tempnam('./ck','cookie'); $ch = curl_init("http://210.44.176.133"); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); curl_setopt($ch, CURLOPT_MAXREDIRS, 10); $data = curl_exec($ch);//运行curl curl_close($ch); return $data; }
分析の結果、実際のログイン アドレスは 210.44.176.133 であることが判明し、その後、アドレス 210.44.176.133/(0qus0s55gb1ojp45n2h0sr55)/Default2.aspx にリダイレクトされます。中央の括弧内はランダムであり、毎回異なります。さて、このリダイレクトされたアドレスを取得するにはどうすればよいでしょうか?
これは私が書いたメソッドです
function curl_get_url(){ $cookie_file=tempnam('./ck','cookie'); $ch = curl_init("http://210.44.176.133"); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file); curl_setopt($ch, CURLOPT_MAXREDIRS, 10); $data = curl_exec($ch);//运行curl curl_close($ch); return $data; }
Accept: text/html, application/xhtml+xml, application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip,deflate,sdch
Accept-Language:zh-CN,zh;q=0.8
Cache-Control:max- age=0
接続:キープアライブ
Cookie:TTKlinkFirst=1; f5127c6793d40d199f68042b8a63e725=1390791234
ホスト:210.44.176.133
ユーザーエージェント:Mozilla/5.0 (Windows NT 6.2) it/ 537.36 (KHTML、Gecko など) Chrome/31.0 .1650.57 Safari/537.36
レスポンスヘッダービューソース
Cache-Control:private
Connection:close
Content-Length:158
Content-Type: text/html; 2
Date :Mon, 27 Jan 2014 02:54 :29 GMT
場所:/(di3bfgq4zqk5c23n2ofovr45)/Default2.aspx
サーバー:Microsoft-IIS/6.0
X-AspNet-Version:1.1.4322
X-Powered-By:ASP
curl_setopt($ch. , CURLOPT_COOKIEFILE, $cookie_file);curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
通常、ログインはイントラネット アドレスである必要があります。テストすることはできません
追加
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file); get メソッドが使用され、一般的なログインは post メソッドである必要があります
あなたのアドレスはイントラネットですアドレスがあるためテストできません
自分でゆっくりデバッグするしかありません
これは投稿する場所ではありません。投稿時に Cookie は送信されませんでした。ここで、そのランダムなアドレスを取得したいだけです。ログイン後、
210.44.176.133 --Jump--> 210.44.176.133 /(0qus0s55gb1ojp45n2h0sr55)/Default2.aspx
にジャンプし、ジャンプ後のページでフォームを送信します。このアドレスを取得する方法を知っています。 。 。
正規表現を使用してアドレスを抽出する