私は、そうしてはならないときにリダイレクトするページを持っています。誰がそれをやっているのか把握しようとしています。最初にハイジャックウィンドウを試みました。場所:window.locationが変更されたときに中断しますか?
window.location = (function (location) {
// location is now hidden inside a closure. We can override it
var Location = Object.create(location);
// Location is now our proxy. We can use it to catch changes
window.__defineGetter__('location', function() { return Location });
window.__defineSetter__('location', function (x) { debugger; location = x; return x; });
// etc etc, considered assignments to location.href, location.search, location.host etc., as well as calls to location.replace and location.assign
}(window.location));
これはChromeではまったく動作しませんでした。セキュリティ上の理由から、window.locationでセッターやゲッタを実行することはできません。 OK。私が試した次のことは、onunloadを観察し、onbeforeunloadた:
['unload', 'beforeunload'].forEach(function (evName) {
window.addEventListener(evName, function() {
debugger; // Chance to check everything right before the redirect occurs
});
});
私はwindow.locationの値はセキュリティ上の理由から、再び、onunloadイベントの後まで同じとどまることを知っていたが、私は他のいくつかの手がかりを期待していました;そのような運はありません。私は次にwindow.locationが割り当てられる可能性のある自分のスクリプトで見つけることができるすべてのポイントにブレークポイントを設定しようとしました。 Chromeデバッガには該当しません。アー。ところで、このリダイレクトはFFでは起こっていません。既にChromeを再起動しようとしました。私は本当にすべてを試してみたが、どこにもいないような気がします。これは開発者としてレベルアップしようとしていることを意味します。お願いします?
人間が私のためにデバッガを操作しているどのブラウザでも、ページの場所をリダイレクトする行を途切れさせる方法はありますか?私はその情報への自動アクセスを許可するというセキュリティ上の意義があることを理解していますが、開発者に特権を与え、それを行う方法はありません。そうでない場合、このような状況を処理する通常の方法は何ですか?それは一般的なようだと私は誰もが概念的に単純な問題で数時間または数日ブロックされて好きだとは思わない。 TIA
最悪の場合ブレークポイントをどこかに置いて、違反者が見つかるまで手動でコードをステップ実行することができます。 –
これは私が今やっていることですが、練習問題として、リダイレクトが動的含まれるスクリプトタグ: // google.com document.body.appendChild(document.createElement( 'script'))にリダイレクトされます。 appendChild(document.createTextNode(decodeURIComponent( '%77%69%6%64%6f%77%2e%6c%6f%63%61%74%69%6f%6e%2e%61%73%73% 69%67%6e%28%27%68%012%3%74%74%70%3a%2%2%%77%77%2%67%6f%6f%67%6c%65%2e%63%これは、ゴードンの結び目をカットするトリックがあるのか、そうでなければ、このような問題に費やす時間を最小限に抑えるためにプロが何をするのだろうと思っているのはなぜですか。 –
これに関する更新はありますか?私は同じことを試みている。 –