Re: [問題] 關於填入欄位會消失的狀況?

作者: microloft (微閣)   2021-08-03 23:55:23
※ 引述《secretfly (☠鬼滅·之喵喵)》之銘言:
: 如題目
: 主要有兩個問題 第一個目的是自動登入 填入帳號與密碼
: 使用方式是:
: document.querySelector("#Pwd").value="";
: 只是在b站使用這個方法後 按下登入 數值會不見
: 我發現的問題是 必須要在欄位中編輯過 裡面的value才不會消失
: 想請問其中原理是什麼?該如何解決?
經過測試,如果先用 .value 填帳號,接著再手動輸入密碼,
則帳號的欄位會被清空。反之,先密碼再帳號也是一樣情形。
以下稍微說明我的猜測與解決方式。
我猜他內部有一個 JS 物件,專門用來儲存對應的帳號、密碼資訊。
當你手動輸入並觸發輸入事件時,他會把欄位內的值更新到內部物件。
當你按下登入,或是換欄位輸入時,他則會把內部物件的值反寫回所有欄位中。
因此,解決方式其實很單純,用 .value 填完之後,手動觸發一次輸入事件,
讓內部物件根據當下欄位的值進行更新就可以了。
以下是我試過可正確執行的版本。
// 測試網址
// https://passport.bilibili.com/login
const username = document.getElementById('login-username')
const password = document.getElementById('login-passwd')
username.value = '帳號'
password.value = '密碼'
// 觸發輸入事件
username.dispatchEvent(new InputEvent('input'))
password.dispatchEvent(new InputEvent('input'))
: 另外額外問的第二個問題 : 我用右鍵檢查登入按鈕 沒發現辦法可以用JS操作
: onclick不能使用 也沒找到能submit的form
: 又是為什麼呢
: 謝謝
因為他並沒有使用傳統的 <form>,而是直接使用 XMLHttpRequest 送出資訊。
你如果在 vendor.{隨機碼}.js 內搜尋一個叫 7GwW 的 function,
就會看到最後送出資訊的實作方式。
你可以看他的 XMLHttpRequest 裡包含了哪些相關資訊,並模仿用一樣的方式來提交。
作者: secretfly (☠鬼滅·之喵喵)   2021-08-06 05:16:00
有神快拜 另外問一下 通常是不是都用cookie阿但監看network的操作那一塊我都看不懂(暈題外話他這樣搞一個反寫目的何在阿 怎麼感覺故意的再額外問 圖書館/博客來那種超廢驗證碼是否好解決呢之前我是有在舊版網頁用inspect找到裡面就有驗證值XD

Links booklink

Contact Us: admin [ a t ] ucptt.com