ただ、卒業前に、アルバートに位置して、私はクッキーを取得するために教務の学校のオフィスにログオンアナログ機能の完全なセットを持って、もともと私はそれは非常に単純な機能だと思ったが、それは2日かかりました。(私は学務湖南強い技術開発の学校のOfficeを使用します)
インターネットは教務記事のシミュレーションログインオフィスの多数を検索、私は基本的にJavaの/ PHP / Pythonの、実際にはないいくつかのNode.js、私はそれを自分で行うことを決めました。
1は、最初のディーン一度にチャールズパケットキャプチャと完全なログを開きます
要求の多くを送信し、ログオン要求をのみ、最後にリクエストを送信するために本物のログインで、2件のリクエストがPOSTリクエスト、リクエストに対する体のフォーム情報と応答で直接見ていることは明らかです
いくつかの再送信の後に私の描画黒い線を引くのフォームデータは、長いUSERNAME、PASSWORDおよびRANDOMCODEなどとしてログイン要求を送信し無駄なデータ、直接削除することができ、あることが判明しました。なぜ2つの要求図?
私はこの記事を見つけました
HTTPS:// www.cnblogs.com/geqianst/p/3286027.html ポストHTTPのユーザー名とパスワードの1二つの値:// 202.114.242.21/whkjdx/Logon.do?method=logon 2 Aの操作により、後に、ページがにジャンプしますHTTP:// 202.114.242.21/whkjdx/index.jsp、そして我々はそれが唯一の完全なだ、http://202.114.242.21/whkjdx/Logon.do?method=logonBySSOに空のフォームを投稿ていない第2のステップは、あなたが権限エラーを求めるメッセージが表示されます場合は、ログインが成功します
分かりました。必要不可欠な2つの要求
2、要求の約束ライブラリYihuhuhuapiaoを使用して
1 // RP-login.js 2 CONST RP =必要とする( '要求約束' ) 3 4 CONST baseUrlに= 'http://59.51.24.46/hysf' 5 LET studentCookie = '' // 填入クッキー 6 7 CONSTヘッダー= { 8 クッキー:studentCookie 9 } 10の 11 CONSTオプション= { 12 の方法: 'POST' 、 13の URI: `$ {} baseUrlに/Logon.do方法= logon`、? 14の ヘッダー、 15 resolveWithFullResponse:真、 16 フォーム:{ 17 USERNAME: 'Iアカウント' 、 18は パスワード: 'Iパスワード' 、 19 RANDOMCODE: '' // フィルコード 20 } 21れる } 図22は、ある CONST optionsSSO = { 23は POST ':メソッド' 、 24 URI: `$ ?方法/Logon.do} = {baseUrlにlogonBySSO`、 25の ヘッダー、 26は resolveWithFullResponse:trueに 27 } 28 29 RP(オプション) 30 .then(本体=> { 31は、 IF(body.body.includes( 'main.jsp' )){ 32 console.log( '成功したログイン' ) 33である } 他{ 34である にconsole.log( 'ログインに失敗した' 、本体) 35 } 36 37 [ RP(optionsSSO) 38である (本体=> .then { 39 はconsole.log(「シングルサインオン成功! ' ) 40 // IF(body.body.includes( "メニュー")){ 41がされて // はconsole.log('ログインに成功') 42がある // {他} 43がある // ログインが「失敗した(にconsole.log' ) 44 // } 45 }) 46 。キャッチ(ERR => { 47 はconsole.log( 'シングルサインオンに失敗しました!' 、ERR) 48 }) 49 }) 50 。キャッチ(ERR => { 51である にconsole.log( 'アカウント検証の失敗又はエラーコード' 、 ERR) 52です })
レジストリのページを開きます。
コード内のコードやクッキー、塗りつぶしを取得し、成功を入力し、教務ホームページのオフィスにノードRP-login.jsは、何の問題は、その後、アカウントをチェックすることはもはや必要では
このオーバー思わなかっただろうが、私は私の直接の中にいることを発見しましたimgタグでこのコード・ページのアドレスを使用して、クッキーが動作しません取得
http://59.51.24.46/hysf/verifycode.servletを
POST要求が送信されるためnodejs新しいクッキーを受信すると、クッキー検証コードは同じではないので、次のステップがある
3は、CAPTCHA画像を得るために
1 // rcode.js 2 const request = require('request') 3 var fs = require('fs') 4 5 request( 6 'http://59.51.24.46/hysf/verifycode.servlet', 7 { encoding: null }, // 此处需设置null,否则获取的body是乱码 8 (err, res, buffer) => { 9 if (err) { 10 console.log('出错了', err) 11 } else { 12 const id = res.headers['set-cookie'][0].slice(0, 43) 13 fs.writeFile(`./${id}.jpg`, buffer, err => { 14 if (err) { 15 console.log('保存验证码失败:', err) 16 } else { 17 console.log('存储验证码图片成功') 18 } 19 }) 20 } 21 } 22 )
执行后获得验证码图片和COOKIE
就是这样,后续的页面处理较简单就不写了