推特逆向算法,推特爬蟲,數據分析,推特關鍵詞搜索

祝大家五一假期快樂!

最近推特加了逆向,頻繁出現404,無法正常抓取數據,這里給出推特逆向的思路及代碼,供大家參考學習!

本文將介紹如何使用 Python 模擬請求 Twitter 的 GraphQL 接口,結合 requestsBeautifulSoup 和自定義的 x-client-transaction-id 參數,成功獲取搜索結果中的 timeline 數據。適合具備一定 Python 基礎的開發者或對 Web 爬蟲感興趣的同學。

一、背景介紹

眾所周知,Twitter(現 X)并沒有開放完整的搜索接口給普通用戶使用。如果你不是開發者賬號,或者沒有獲得 Twitter API v2 的高級權限,就很難通過官方 API 獲取搜索結果。

但實際上,Twitter 的 Web 前端使用的是 GraphQL 接口進行數據交互。我們可以通過分析請求,手動構造這些請求并獲取數據。

二、核心技術棧

  • requests:用于發起 HTTP 請求

  • bs4 (BeautifulSoup):用于解析 Twitter 首頁 HTML,輔助構造 client_transaction_id

  • json:構造 GraphQL 請求參數

  • loguru:用于日志記錄

  • 自定義模塊 ClientTransaction:用于生成 Twitter 的 x-client-transaction-id

三、關鍵參數獲取

為了成功模擬 Twitter 請求,我們需要準備以下關鍵參數:

  1. authorization Token:用于通過認證。

  2. Cookie:用于維持會話,尤其是 ct0auth_token 是必要的。

  3. x-client-transaction-id:是防爬關鍵參數,通過訪問首頁解析獲得。

四、代碼

import bs4
import requests
import time
from decryption.transaction import ClientTransaction
from loguru import logger
import json
# 設置 cookie 和 authorization(需自己抓包獲取)
twitter_cookie = '...你的cookie...'
authorization = "Bearer ...你的token..."
# 提取 ct0
xCsrfToken = ""
for part in twitter_cookie.split(";"):if part.strip().startswith("ct0="):xCsrfToken = part.strip().split("=", 1)[1]break
def get_cursor(dataJson):instructions = dataJson.get('data', {}).get('search_by_raw_query', {}).get('search_timeline', {}).get('timeline', {}).get('instructions', [])entries = []cursor = Nonefor ins in instructions:if ins.get('type') == "TimelineAddEntries":entries = ins.get('entries', [])for ent in entries:content = ent.get('content', {})if content.get('cursorType') == 'Bottom':cursor = content.get('value')breakreturn cursor, entries
cursor = ''
page = 1while True:url = "https://twitter.com"resp = requests.get(url, headers={"User-Agent": "..."})response = bs4.BeautifulSoup(resp.content, "lxml")ctreq = ClientTransaction(home_page_response=response)xClientTransactionId = ctreq.generate_transaction_id(method="GET",path="/i/api/graphql/AIdc203rPpK_k_2KWSdm7g/SearchTimeline")url = "https://x.com/i/api/graphql/AIdc203rPpK_k_2KWSdm7g/SearchTimeline"headers = {"authorization": authorization,"x-client-transaction-id": xClientTransactionId,"x-csrf-token": xCsrfToken,"x-twitter-auth-type": "OAuth2Session","x-twitter-active-user": "yes","x-twitter-client-language": "zh-cn","Cookie": twitter_cookie,"content-type": "application/json"}variables = {"rawQuery": "feed","count": 20,"querySource": "typed_query","product": "Top",}if cursor:variables["cursor"] = cursorparams = {"variables": json.dumps(variables, separators=(",", ":")),"features": json.dumps({"rweb_video_screen_enabled": False,"profile_label_improvements_pcf_label_in_post_enabled": True,# ...省略部分參數})}response = requests.get(url, headers=headers, params=params)logger.info(f"頁數:{page},狀態碼:{response.status_code}")if response.status_code == 404:logger.warning("頁面未找到,重試...")continuereq_data = response.json()cursor, entries = get_cursor(req_data)for entry in entries:logger.info(entry)time.sleep(3)page += 1

五、運行效果展示

六、注意事項

  1. 防止封號:建議不要頻繁請求,設置合理的 sleep(如 3~5 秒)。

  2. cookie 有效期auth_tokenct0 是有時效性的,需要定期更新。

七、總結

通過對 Twitter Web 接口的逆向分析,我們可以在不依賴官方 API 的情況下實現搜索結果的抓取。當然,這種方式存在一定的穩定性和合規風險,建議僅用于學習研究。如需幫助可以聯系:zx_luckfe

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/905208.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/905208.shtml
英文地址,請注明出處:http://en.pswp.cn/news/905208.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

圖形化編程平臺的破局之道:從工具同質化到生態差異化

一、同質化困局的底層邏輯剖析 在全球圖形化編程市場中,工具功能趨同已成為行業共識。據 Statista 2024 年數據顯示,主流平臺的基礎功能重合度高達 78%,核心模塊(如條件判斷、循環結構)的實現方式高度相似。這種現象的…

【Rust】枚舉和模式匹配

目錄 枚舉和模式匹配枚舉的定義Option 枚舉控制流運算符 match簡潔控制流 if let 枚舉和模式匹配 枚舉的定義 結構體給予你將字段和數據聚合在一起的方法,像 Rectangle 結構體有 width 和 height 兩個字段。而枚舉給予你一個途徑去聲明某個值是一個集合中的一員。…

應急響應靶機——WhereIS?

用戶名及密碼:zgsf/zgsf 下載資源還有個解題.exe: 1、攻擊者的兩個ip地址 2、flag1和flag2 3、后門程序進程名稱 4、攻擊者的提權方式(輸入程序名稱即可) 之前的命令: 1、攻擊者的兩個ip地址 先獲得root權限,查看一下歷史命令記錄&#x…

變量函數實戰:高保真APP原型“發票頁面”動態交互教程

變量函數是高保真交互原型設計中常見的高級交互功能,能夠避免重復復制與手動修改頁面元素和邏輯標注,讓演示更有真實體驗感。本文分享一個高保真APP交互原型頁面的實操案例,結合原型設計工具中的變量函數與邏輯判斷功能,手把手教你…

量子加密通信:守護信息安全的未來之盾

摘要 在數字化時代,信息安全成為全球關注的焦點。傳統加密技術面臨著被量子計算破解的風險,而量子加密通信作為一種基于量子力學原理的新型加密技術,提供了理論上無條件安全的通信保障。本文將詳細介紹量子加密通信的基本原理、技術實現、應用…

《Vue.js》閱讀之響應式數據與副作用函數

Vue.js 《Vue.js設計與實現》(霍春陽) 適合:從零手寫Vue3響應式系統,大廠面試源碼題直接覆蓋。重點章節:第4章(響應式)、第5章(渲染器)、第8章(編譯器&…

數據處理專題(十三)

學會基本的圖像處理技術。? OpenCV 基礎 實踐:使用 OpenCV 進行圖像讀取、顯示和基本處理? 03 代碼示例 1. 導入必要的庫 import cv2import numpy as npimport matplotlib.pyplot as plt 2. 圖像讀取 # 讀取圖像image_path path_to_your_image.jpg # 替換…

springboot旅游小程序-計算機畢業設計源碼76696

目 錄 摘要 1 緒論 1.1研究背景與意義 1.2研究現狀 1.3論文結構與章節安排 2 基于微信小程序旅游網站系統分析 2.1 可行性分析 2.1.1 技術可行性分析 2.1.2 經濟可行性分析 2.1.3 法律可行性分析 2.2 系統功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 系統…

P1874 快速求和

目錄 題目算法標簽: 動態規劃, 線性 d p dp dp思路代碼 題目 P1874 快速求和 算法標簽: 動態規劃, 線性 d p dp dp 思路 求的是最少組成 n n n的加法次數, 對于當前數字序列可以設計狀態表示 f [ i ] [ j ] f[i][j] f[i][j]表示考慮前 i i i個字符, 并且和是 j j j的所有方…

知名人工智能AI培訓公開課內訓課程培訓師培訓老師專家咨詢顧問唐興通AI在金融零售制造業醫藥服務業創新實踐應用

AI賦能未來工作:引爆效率與價值創造的實戰營 AI驅動的工作革命:從效率提升到價值共創 培訓時長: 本課程不僅是AI工具的操作指南,更是面向未來的工作方式升級羅盤。旨在幫助學員系統掌握AI(特別是生成式AI/大語言模型…

Linux 內核參數

文章目錄 什么是內核參數參數種類配置方式1. 編譯內核時配置2. 內核啟動時配置3. 內核運行時配置4. 加載內核模塊時配置總結 什么是內核參數 內核參數是 Linux 系統中用于控制和調整內核行為的可配置選項。這些參數影響系統的性能、安全性和各種功能特性。 參數種類 大部分參…

pythonocc 拉伸特征

micromamba install -c conda-forge pythonocc-core opencascade.js安裝不起來,ai用pythonocc練個手 拉伸線框 線成面 from OCC.Core.gp import gp_Pnt, gp_Dir, gp_Vec from OCC.Core.BRepBuilderAPI import BRepBuilderAPI_MakeEdge, BRepBuilderAPI_MakeWire f…

Vue.js 頁面切換空白與刷新 404 問題深度解析

在使用 Vue.js 開發單頁應用 (SPA) 的過程中,開發者經常會遇到兩個常見問題:頁面切換時出現短暫的空白屏幕,以及刷新頁面時返回 404 錯誤。這兩個問題不僅影響用戶體驗,還可能阻礙項目的正常上線。本文將深入探討這兩個問題的成因…

Go 語言 slice(切片) 的使用

序言 在許多開發語言中,動態數組是必不可少的一個組成部分。在實際的開發中很少會使用到數組,因為對于數組的大小大多數情況下我們是不能事先就確定好的,所以他不夠靈活。動態數組通過提供自動擴容的機制,極大地提升了開發效率。這…

Qt5.14.2 鏈接 MySQL 8.4 遇到的問題

問題一: "Plugin caching_sha2_password could not be loaded: 找不到指定的模塊。 Library path is caching_sha2_password.dll QMYSQL: Unable to connect" 解決方法: alter user root@localhost identified with mysql_native_password by root;問題二: ERR…

Docker 部署 - Crawl4AI 文檔 (v0.5.x)

Docker 部署 - Crawl4AI 文檔 (v0.5.x) 快速入門 🚀 拉取并運行基礎版本: # 不帶安全性的基本運行 docker pull unclecode/crawl4ai:basic docker run -p 11235:11235 unclecode/crawl4ai:basic# 帶有 API 安全性啟用的運行 docker run -p 11235:1123…

開發工具分享: Web前端編碼常用的在線編譯器

1.OneCompiler 工具網址:https://onecompiler.com/ OneCompiler支持60多種編程語言,在全球有超過1280萬用戶,讓開發者可以輕易實現代碼的編寫、運行和共享。 OneCompiler的線上調試功能完全免費,對編程語言的覆蓋也很全&#x…

Docker-配置私有倉庫(Harbor)

配置私有倉庫(Harbor) 一、環境準備安裝 Docker 三、安裝docker-compose四、準備Harbor五、配置證書六、部署配置Harbor七、配置啟動服務八、定制本地倉庫九、測試本地倉庫 Harbor(港灣),是一個用于 存儲 和 分發 Docker 鏡像的企業級 Regi…

關于高并發GIS數據處理的一點經驗分享

1、背景介紹 筆者過去幾年在參與某個大型央企的項目開發過程中,遇到了十分棘手的難題。其與我們平常接觸的項目性質完全不同。在一般的項目中,客戶一般只要求我們能夠通過桌面軟件對原始數據進行加工處理,將各類地理信息數據加工處理成地圖/場景和工作空間,然后再將工作空…

使用 DMM 測試 TDR

TDR(時域反射計)可能是實驗室中上升時間最快的儀器,但您可以使用直流歐姆表測試其準確性。 TDR 測量什么 在所有高速通道中,反射都很糟糕。我們嘗試設計一個通道來減少反射,這些反射都會導致符號間干擾 (…