2016-11-20 206 views
0

使命

我想填寫用戶名和密碼字段,然後點擊登錄按鈕登錄到使用Javascript的Instagram。如何用Javascript登錄Instagram?

我已經試過(用正確的登錄憑據):

Instagram Login Page

document.querySelector('[name=username]').value = "USERNAME"; 
document.querySelector('[name=password]').value = "PASSWORD"; 

var buttons = document.getElementsByTagName('button'); 
for (var i = 0; i < buttons.length; i++) { 
    if (buttons[i].innerText == 'Log in') { 
     buttons[i].click(); 
     break; 
    } 
} 

問題

即使用戶名和密碼字段包含正確的用戶名和密碼,我得到這個錯誤:

The username you entered doesn't belong to an account. Please check your username and try again.

問題

是否可以使用Javascript登錄Instagram?如果是這樣,該怎麼辦?

回答

0

根本問題在於Instagram是使用React構建的,而在React中,UI是由「組件」對象構建而成的,該組件使用適當的狀態更新DOM。通過DOM更改文本字段的值,組件的狀態不會更新,因此Instagram的React代碼不知道新值。當你點擊按鈕時,原始值(它是空白的)在登錄請求中被髮送。

如果你想把這個關掉,你必須找到一種方法來誘使React更新組件狀態。如果我是你,我會在觸發合成事件的過程中扮演一個角色,讓React認爲用戶鍵入了一些東西。儘管我不是React的專家,但我無法幫到的。