javascriptを使用して任意のウェブサイトのログインフィールドを検出する方法はありますか? IEとFirefoxには私のユーザー名とパスワードを「記憶」する機能があります。その機能を複製したスクリプトを作成したいと思います。例えば、Gmailのログインページを表示するときに、どうすれば 'ユーザー名とパスワード'フィールドを見つけて取得/設定することができますか?ログインフィールドの検出
答えて
まあ1つの方法(私はブラウザのいずれかを使用して、ほぼ確信していることを)最初<入力タイプ=「パスワード」>を見つけること、そしてそれ以前に<入力タイプ=「テキスト」>を探しますそれ。
ブラウザのユーザー/パスワード記憶機能は、フォームにパスワードタイプの入力フィールドがあることによってトリガーされると思います。
次に、最も一般的なログインフィールドname
d 'login'、 'user'、 'username'、 'j_username'(JAASベースのサイトがある場合)を探してください。そうでない場合は、すべてのテキスト入力フィールドを保存してください。 ;)
AFAIK、IEとFirefoxのパスワード検出機能は、フィールドの名前に疎遠に基づいています。つまり、IDにユーザー名またはパスワードという単語がある場合は入力を求められます。
jQueryを使用する場合は、次のようなものを使用できます。
$('input[id*=username]').css('background', 'red');
// or
$('input[id*=password]').css('background', 'red');
また、あなたは
$(':password').css('background', 'red');
* uname *、* usrname *、* usr_name *、* login *などのいくつかのWebサイトでは、名前が難読化されているため、これは実現不可能です。 –
でのjQueryを使用して、任意のパスワードフィールドをチェックすることができる基本的な概要:
- それらのすべて
- をループ
- すべてのパスワードフィールドを収集します各繰り返しで:
- パスワードフィールドが
- の一部は、1)ないパスワードフィールドおよび2)ないタイプ=「テキスト」 以外の形で最初の入力フィールドを検索していることを<フォーム/ >を探します
- 戻り、すべてのユーザ名/パスワードのペアの配列
出力例:
[ [ <input id="username" /> , <input type="password" id="pswd" /> ] ]
ペアの配列を出力し、各ペアにはユーザー名とパスワードのノードが含まれます。明らかに、ほとんどのページでは、ログインセクションが1つしかないので、1つのペアを取得します。
ここにある:ヤフー、アマゾン、グーグル、YouTubeで正常にテスト
function getLoginFields() {
var fieldPairs = [],
pswd = (function(){
var inputs = document.getElementsByTagName('input'),
len = inputs.length,
ret = [];
while (len--) {
if (inputs[len].type === 'password') {
ret[ret.length] = inputs[len];
}
}
return ret;
})(),
pswdLength = pswd.length,
parentForm = function(elem) {
while (elem.parentNode) {
if(elem.parentNode.nodeName.toLowerCase() === 'form') {
return elem.parentNode;
}
elem = elem.parentNode;
}
};
while (pswdLength--) {
var curPswdField = pswd[pswdLength],
parentForm = parentForm(curPswdField),
curField = curPswdField;
if (parentForm) {
var inputs = parentForm.getElementsByTagName('input');
for (var i = 0; i < inputs.length; i++) {
if (inputs[i] !== curPswdField && inputs[i].type === 'text') {
fieldPairs[fieldPairs.length] = [inputs[i], curPswdField];
break;
}
}
}
}
return fieldPairs;
}
// Usage:
var loginFields = getLoginFields()[0]; // or loop through results.
...(様々なアカウント/ログインページ)
// Locate the username field in the form by searching backwards
// from the first passwordfield, assume the first text field is the
// username. We might not find a username field if the user is
// already logged in to the site.
for (var i = pwFields[0].index - 1; i >= 0; i--) {
if (form.elements[i].type == "text") {
usernameField = form.elements[i];
break;
}
}
これは、Firefoxが行う方法です:http://mxr.mozilla.org/firefox/source/toolkit/components/passwordmgr/src/nsLoginManager.js#655
- 1. ログインフィールドの検証
- 2. Windowsでログインフィールドに使用できるパターン
- 3. AFNetworking 3.0でXML SOAPリクエストを行う方法。例ログインフィールド
- 4. 引数を配列に追加:Woocommerceログインフィールドにオートフォーカス
- 5. ログインフィールドは実装後に表示されません
- 6. ブロブ検出+フォアグラウンド検出
- 7. ウェブサイト上の複数のログインフィールドに自動入力を使用する方法
- 8. Capybaraは私のログインフィールドを埋めることはありません
- 9. どのようにログインしているユーザーからログインフィールドを非表示
- 10. 2つのテーブルからログインフィールドを確認する必要があります
- 11. キーストロークの検出
- 12. タブレットの検出
- 13. テストモードの検出
- 14. コンピュータの検出
- 15. エクスポートジャスパーレポートフォームの検出
- 16. CGAssociateMouseAndMouseCursorPositionの検出
- 17. トーストメッセージの検出
- 18. デッドプロキシの検出
- 19. ハードウェアオーバーレイの検出
- 20. パケットスニッファの検出
- 21. メモリリークの検出
- 22. バックグラウンドタップの検出
- 23. エアープリンタの検出
- 24. スクロールテーブルビューセルの検出
- 25. jquery.tinymce.jsの検出
- 26. フラッシュテストプレーヤーの検出
- 27. メモリリークの検出
- 28. ブルートゥースサンプルの検出
- 29. テキストシーケンスの検出
- 30. デッドラインスレッドプリエンプションの検出
ああ、あなたのハッカーます! –