首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Python 模擬 Twitter 登錄:使用 requests.Session 替代 urllib 實現狀態保持

     編輯:程式設計綜合問答

原代碼問題

  • 手動管理 cookielib、opener、header 繁瑣易錯。
  • 未正確處理重定向、CSRF Token 刷新、加密參數。
  • Twitter 現已加強反爬(JS 渲染、設備指紋、OAuth2),純 HTTP 模擬極難成功。

推薦方案:requests + Session

import requests
from bs4 import BeautifulSoup

session = requests.Session()
session.headers.update({
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
})

# 1. 獲取登錄頁,解析 authenticity_token
login_page = session.get('https://twitter.com/login')
soup = BeautifulSoup(login_page.text, 'html.parser')
auth_token = soup.find('input', {'name': 'authenticity_token'})['value']

# 2. 提交登錄表單
payload = {
    'session[username_or_email]': 'your_username',
    'session[password]': 'your_password',
    'remember_me': '1',
    'authenticity_token': auth_token,
}
resp = session.post('https://twitter.com/sessions', data=payload)

# 3. 判斷登錄成功
if resp.url == 'https://twitter.com/home':
    print('登錄成功')
    # 後續請求直接用 session.get/post,自動攜帶 Cookie
else:
    print('登錄失敗', resp.status_code)

進階建議

  • 使用 Selenium/Playwright:真實瀏覽器環境,自動執行 JS、處理驗證碼、設備指紋。
  • 官方 API:Twitter Developer API(OAuth 1.0a/2.0)獲取授權 Token,合法穩定。
  • 避免頻繁請求:加隨機延遲,模擬人類行為,降低封禁風險。

核心優勢

requests.Session 自動管理 Cookie、連接池、重定向、Keep-Alive,代碼量減少 80%,可讀性大幅提升。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved