Python クローラー - Cookie インスタンスのメモを取得する

知らせ!某○○サイトの逆事例は学習事例としてのみ使用し、他の個人・団体の営利行為は禁止です!

ステップ 1: 応答コンテンツの取得をリクエストします。そして分析します。

 第 2 ステップ: 主要なステップの分析 (この部分はステーション B チューリンゲのボスを指します)。コンテンツはフォーマットされた応答コンテンツです

ステップ 3: setcookie() でブレークポイント。Cookieを削除してページを更新してください(読み込みに時間がかかりますので、しばらくお待ちください)。ブレークポイントに X が表示され、X が Cookie を生成することを示します。スタックでの実行順序を見ると、リロード関数の前のステップは匿名関数であることがわかります。クリックして入力してください

ステップ 4: 無名関数を入力すると、x=arg2 を説明する reload (arg2) が表示されます (ロード時間は非常に長く、忍耐がなければ表示できません)。

ステップ 5: マークされたタブの arg2 にブレークポイントを作成します。ブレークポイントに到達したら、Cookie を削除し、ページを更新して、ここに留まるまで待ちます。知らせ!前の setcookie() 関数のブレークポイントを必ず削除してください。

 ステップ 6: ブレークポイントには、_0x23a392 と _0x5e8b26 という 2 つの値が表示されます。ここで、_0x23a392 は生成された値です。このコンテンツをバックルにしてエディタに入れます

 _0x5e8b26 この値を検索すると、定数であることがわかります(理解できない学生は、個人的に見るか、画像を見て理解できます)

 

 ステップ 7: 推定されたコードを分析します。エラー内容をローカルで実行することで、解析して補足できます。

 

 

 最終コード表示

// arg1 = 'F90D514BDEF402588B5CFCED428E96F13C466BBE'
function fuzhi_arg1(arg1) {
_0x5e8b26 = "3000176000856006061501533003690027800375"
String['prototype']['unsbox'] = function() {
                var _0x4b082b = [0xf, 0x23, 0x1d, 0x18, 0x21, 0x10, 0x1, 0x26, 0xa, 0x9, 0x13, 0x1f, 0x28, 0x1b, 0x16, 0x17, 0x19, 0xd, 0x6, 0xb, 0x27, 0x12, 0x14, 0x8, 0xe, 0x15, 0x20, 0x1a, 0x2, 0x1e, 0x7, 0x4, 0x11, 0x5, 0x3, 0x1c, 0x22, 0x25, 0xc, 0x24];
                var _0x4da0dc = [];
                var _0x12605e = '';
                for (var _0x20a7bf = 0x0; _0x20a7bf < this['\x6c\x65\x6e\x67\x74\x68']; _0x20a7bf++) {
                    var _0x385ee3 = this[_0x20a7bf];
                    for (var _0x217721 = 0x0; _0x217721 < _0x4b082b['length']; _0x217721++) {
                        if (_0x4b082b[_0x217721] == _0x20a7bf + 0x1) {
                            _0x4da0dc[_0x217721] = _0x385ee3;
                        }
                    }
                }
                _0x12605e = _0x4da0dc['\x6a\x6f\x69\x6e']('');
                return _0x12605e;
            }
String['prototype']['hexXor'] = function(_0x4e08d8) {
                var _0x5a5d3b = '';
                for (var _0xe89588 = 0x0; _0xe89588 < this['length'] && _0xe89588 < _0x4e08d8['length']; _0xe89588 += 0x2) {
                    var _0x401af1 = parseInt(this['slice'](_0xe89588, _0xe89588 + 0x2), 0x10);
                    var _0x105f59 = parseInt(_0x4e08d8['slice'](_0xe89588, _0xe89588 + 0x2), 0x10);
                    var _0x189e2c = (_0x401af1 ^ _0x105f59)['toString'](0x10);
                    if (_0x189e2c['length'] == 0x1) {
                        _0x189e2c = '\x30' + _0x189e2c;
                    }
                    _0x5a5d3b += _0x189e2c;
                }
                return _0x5a5d3b;
            }

var _0x23a392 = arg1['unsbox']();
arg2 = _0x23a392['hexXor'](_0x5e8b26)
    return arg2;
    }

  あくまでメモとして残しておきますので、ご不明な点がございましたらご指導ください

おすすめ

転載: blog.csdn.net/weixin_43124425/article/details/131459318