2015-07-18 70 views
1

<input type="text" class="inputtext" name="email" id="email" value="" tabindex="1">是郵箱Python3我將如何登錄使用Facebook的請求

<input type="password" class="inputtext" name="pass" id="pass" tabindex="2">的密碼箱

<input value="Connexion" tabindex="4" type="submit" id="u_0_v"> 被提交按鈕 現在......我有此腳本運行,但我仍然可以「T設法登錄(我得到相同的登錄頁面:facebook.com)

import requests 
from bs4 import BeautifulSoup 

body = {'email':'[email protected]','pass':'xxxxx',} 
con = requests.post('https://www.facebook.com', data=body) 
s = BeautifulSoup(con.content) 
print (s) 

我必須在通過‘提交按鈕’在體內{}。我以爲我應該包括它,但沒有提交按鈕的名稱,所以我不知道如何將它包含在body {}中。感謝您的幫助

+0

@alfasin你認爲你可以幫助我嗎? :) –

+0

你搜索stackoverflow和讀取https://stackoverflow.com/questions/11472148/how-can-i-log-in-to-facebook-using-python-requests-urllib3例如? –

+0

我在這裏回覆:http://stackoverflow.com/a/31497720/1057429 – alfasin

回答

1

您總是需要關注任何附加(隱藏)字段,這些字段是憑據發送的,並且可能需要用於任何服務器處理。

這就是你的例子runescape.com的情況。當你使用瀏覽器攔截數據,即通常所用的形式一起發送,您可以用這種方式修改腳本:

import requests 
from bs4 import BeautifulSoup 

body = {'username':'[email protected]','password':'xxxxx','submit':'Login','mod':'www','dest':'community'} 
con = requests.post('https://secure.runescape.com/m=weblogin/login.ws', data=body) 
s = BeautifulSoup(con.content) 
print(s) 

你可以看到需要有moddest參數,使服務器的處理功能。至於提交按鈕,它很少被檢查,但包含它也總是比較安全的(就像我在這個例子中所做的那樣)。

結果不再是404,但登錄仍然失敗,因爲有Captcha以防止自動登錄。

至於Facebook,有很多複雜的補充領域,這將需要大量的逆向工程來完成。如果可能的話,我強烈建議考慮使用官方的Facebook Graph API(https://developers.facebook.com/docs/graph-api)來完成你所需要的。

+0

您的回答與我的問題完全匹配,但我仍然有2個問題與您剛剛寫的內容有關。首先,如果必須使用提交按鈕{},但提交按鈕沒有'name = Submit_button',但有'id = submit_it'和'value ='submit_me'...我應該如何將提交放入正文中?其次,有沒有辦法可以......當您在驗證碼頁面時,將圖像發送給用戶他可以手動回答驗證碼?(同時,請求會等待用戶向驗證碼寫回答)謝謝v很多你的時間和你的回答:) –

+0

嘿!我只是試過你的腳本,它讓我對同一個404頁面(找不到)有任何想法,爲什麼?我沒有工作,所以我不能點擊答案按鈕:S –

+0

不知道爲什麼它不會工作,我的工作正如發佈一樣:https://gist.github.com/jendagroovy/dccf5375905b9255b002 –