簡體   English   中英

無法使用請求模塊登錄 Facebook

[英]Can't log in to facebook using requests module

我正在嘗試使用請求模塊登錄 Facebook。 雖然看起來我已經以正確的方式准備了有效負載,但是當我通過發布請求發送它時,我沒有在響應中獲得所需的內容。 不過,我得到 200 狀態代碼。 讓你知道,如果我得到相應的回應,我應該在其中找到我的全名。

我最初嘗試如下:

import requests
from bs4 import BeautifulSoup
from datetime import datetime

link = 'https://www.facebook.com/'
base_url = 'https://www.facebook.com{}'

time = int(datetime.now().timestamp())

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36',
    'referer': 'https://www.facebook.com/',
}

with requests.Session() as s:
    r = s.get(link)
    soup = BeautifulSoup(r.text,"lxml")
    form_url = soup.select_one("form[data-testid='royal_login_form']")['action']
    post_url = base_url.format(form_url)
    payload = {i['name']:i.get('value','') for i in soup.select('input[name]')}
    payload['email'] = 'YOUR_EMAIL'
    payload['encpass'] = f'#PWD_BROWSER:0:{time}:YOUR_PASSWORD'
    payload.pop('pass')
    res = s.post(post_url,data=payload,headers=headers)
    print(res.url)
    print(res.text)

這是我嘗試過的另一種方法,但也沒有奏效:

import requests
from bs4 import BeautifulSoup
from datetime import datetime

login_url = 'https://www.facebook.com/login/device-based/regular/login/?login_attempt=1&lwv=101'
time = int(datetime.now().timestamp())

headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
    'origin': 'https://www.facebook.com',
    'referer': 'https://www.facebook.com/login/device-based/regular/login/?login_attempt=1&lwv=101'
}

with requests.Session() as s:
    r = s.get(login_url)
    soup = BeautifulSoup(r.text,"lxml")
    payload = {i['name']:i.get('value','') for i in soup.select('input[name]')}
    payload['email'] = 'YOUR_EMAIL'
    payload['encpass'] = f'#PWD_BROWSER:0:{time}:YOUR_PASSWORD'
    payload['had_password_prefilled'] = 'true'
    payload['had_cp_prefilled'] = 'true'
    payload['prefill_source'] = 'browser_dropdown'
    payload['prefill_type'] = 'contact_point'
    payload['first_prefill_source'] = 'last_login'
    payload['first_prefill_type'] = 'contact_point'
    payload['prefill_contact_point'] = 'YOUR_EMAIL'
    payload.pop('pass')
    r = s.post(login_url,data=payload,headers=headers)
    print(r.status_code)
    print(r.url)

如何使用請求登錄 Facebook?

這可能是xy 問題的一個案例

我建議在以編程方式訪問 Facebook 時嘗試使用Selenium

更多使用 Selenium 登錄的例子。

https://www.askpython.com/python/examples/python-automate-facebook-login

https://www.guru99.com/facebook-login-using-python.html

如果您只需要登錄,那么使用 selenium,您可以這樣做:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
URL = 'https://www.facebook.com/'
PATH = r'C:\Program Files (x86)\chromedriver.exe'
driver = webdriver.Chrome(PATH)
driver.get(URL)
email = driver.find_element_by_id('email')
email.send_keys('YourEmail')
password = driver.find_element_by_id('pass')
password.send_keys('YourPassword')
password.send_keys(Keys.RETURN)

我建議您使用您經常使用的瀏覽器登錄此過程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM