使用 Python MechanicalSoup 登录时出现 503 错误

503 error logging in using Python MechanicalSoup

我想在登录页面后面抓取一些信息,但我得到了 503

这是我尝试使用 mechanicalsoup 登录时发生的情况(与 robobrowser 的结果相同):

>>> import mechanicalsoup
>>> browser = mechanicalsoup.StatefulBrowser(user_agent='Mozilla/5.0')
>>> page = browser.get('https://X.com')
>>> page.status_code
200
>>> page = browser.get('https://X.com/wp-login.php')
>>> page.status_code
503

我尝试了几种不同的 user_agents,我该如何解决这个问题?移动饼干?

它受 CloudFlare 保护,后者拒绝向 URL 发出纯 GET 请求。您需要一个非无头浏览器才能访问该页面,否则它将拒绝它。使用提供 GUI 的库,例如 Selenium,您应该没问题。

from selenium import webdriver
browser = webdriver.Firefox() # or whichever browser you prefer
browser.get('https://hacked.com/wp-login.php')

请注意,无法使用 Selenium 获取状态代码。但是,您可以通过更多方式与页面交互,并确认您已到达该页面。

好的,我设法使用 https://github.com/Anorov/cloudflare-scrape

做到了这一点
import cfscrape
from bs4 import BeautifulSoup

# log in
scraper = cfscrape.CloudflareScraper()
scraper.get('https://X.com/wp-login.php')
tokens = cfscrape.get_tokens('https://X.com')
browser = mechanicalsoup.StatefulBrowser(session=scraper, user_agent=tokens[1])
browser.select_form('#loginform')
browser['log'] = 'X'
browser['pwd'] = 'X'
browser.submit_selected()
browser.open('https://X.com/page/')