爬蟲項目實戰
說明
作者個人博客
回鍋炒辣椒的博客
所有項目均為作者練手分享項目,如遇侵權請聯繫刪除,僅作學習分享,不能進行任何商業活動。
由於程序完成的時間問題,部分項目可能無法復用。
練習筆記見note.txt
此項目將持續更新
項目部分實戰講解見b站:https://space.bilibili.com/35242527/channel/collectiondetail?sid=1590251
下面是個人對於網站爬取難度評級
| 等級 | 標識 | 難度描述 |
|---|
| 蜘蛛卵 | 0 | 入門 |
| 幼蛛 | 00 | 踏過門檻了 |
| 小蜘蛛 | * | 初級 |
| 大蜘蛛 | ** | 比初級高一點 |
| 巨蜘蛛 | *** | 中等難度 |
| 輝耀蜘蛛 | + | 中上難度 |
| 毒蛛 | ++ | 比較難 |
| 蜘蛛王 | +++ | 難 |
| 蜘蛛精 | KING | 地獄 |
項目目錄
graph TD;
基礎篇-->request篇;
基礎篇-->解析html以及正則篇;
基礎篇-->scrapy篇;
基礎篇-->高性能異步爬蟲;
基礎篇-->feapder;
自動化篇-->selenium
自動化篇-->playwright;
進階篇-->綜合案例;
進階篇-->js逆向專題;
js逆向專題-->請求頭或響應數據加密;
js逆向專題-->瀏覽器指紋檢測;
js逆向專題-->webPack篇;
js逆向專題-->環境檢測篇;
js逆向專題-->wasm篇;
驗證碼篇-->滑塊篇;
驗證碼篇-->點選篇;
Loading項目所用到的第三方庫
pip install requests # requests库,爬虫的开始
pip install curl_cffi # 标准tls请求库
pip install lxml # xpath提取数据
pip install playwright # 自动化需要
pip install ddddocr # 识别验证码
pip install selenium # 自动化需要,推荐playwright
pip install scrapy # 爬虫框架
pip install " feapder[all] " # 新一代爬虫框架
pip install pycryptodome # python标准密码库
pip install pyexecjs2 # python调用js代码
pip install m3u8 # 下载m3u8视频
pip install prettytable # 格式化输出
pip install tqdm # 进度条
pip install loguru # 强大的日志工具库
pip install retrying # 强大的重试工具
npm install crypto-js/cryptojs # 二选一,js标准密码库
npm install jsdom # js模拟浏览器的dom和bom
npm install tough-cookie # 浏览器cookie
基礎篇
request篇
| 難度標識 | 項目名 | 補充 | 快捷導航 |
|---|
| 騎士侍從 | 百度網頁 | 第一個爬蟲程序 | 點這裡 |
| 騎士侍從 | ua識別 | 初始反爬 | 點這裡 |
| 騎士侍從 | 百度翻譯 | 認識post請求 | 點這裡 |
| 騎士侍從 | 豆瓣電影 | 基礎 | 點這裡 |
| 騎士侍從 | 肯德基位置查詢 | json練習 | 點這裡 |
解析html以及正則篇
| 難度標識 | 項目名 | 補充 | 快捷導航 |
|---|
| 準騎士 | 獲取fakeua | lxml解析 | 點這裡 |
| 準騎士 | 4k圖片爬取 | lxml以及解決編碼錯誤問題 | 點這裡 |
| 準騎士 | 58 | lxml以及分頁爬取 | 點這裡 |
| 準騎士 | bs基礎 | 初始bs | 點這裡 |
| 準騎士 | bs案例 | 實戰bs | 點這裡 |
| 準騎士 | xpath基礎 | 初始xpath | 點這裡 |
| 準騎士 | xpath解析 | 練習xpath | 點這裡 |
| 準騎士 | 正則基礎 | 初始正則 | 點這裡 |
| 準騎士 | 正則練習 | 實戰正則 | 點這裡 |
| 準騎士 | 簡歷爬取 | 以上的小綜合 | 點這裡 |
scrapy篇
| 難度標識 | 項目名 | 補充 | 快捷導航 |
|---|
| 大騎士 | bossjob | 一級頁面爬取,可能不可用 | 點這裡 |
| 大騎士 | 雙色球 | 都是基本scrapy操作 | 點這裡 |
| 大騎士 | 圖片 | 都是基本scrapy操作 | 點這裡 |
| 大騎士 | 陽光政策 | 都是基本scrapy操作 | 點這裡 |
| 大騎士 | yi車數據爬取 | 帶有js逆向,不過是入門級,以及大批量json數據解析 | 點這裡 |
| 大騎士 | 校花網 | 都是基本scrapy操作 | 點這裡 |
| 大騎士 | 網易新聞 | 都是基本scrapy操作 | 點這裡 |
| 大騎士 | 17k小說爬取 | 都是基本scrapy操作 | 點這裡 |
高性能異步爬蟲
| 難度標識 | 項目名 | 補充 | 快捷導航 |
|---|
| 騎士侍從 | 認識flask | 基礎知識 | 點這裡 |
| 騎士 | 線程池基礎 | 基礎知識 | 點這裡 |
| 大騎士 | meinv圖片批量爬取 | 基礎 | 點這裡 |
| 大騎士 | 明星圖片爬取 | 基礎 | 點這裡 |
| 大騎士 | 多任務協程 | 基礎 | 點這裡 |
| 大騎士 | 線程池應用 | 基礎 | 點這裡 |
feapder
| 難度標識 | 項目名 | 補充 | 快捷導航 |
|---|
| 輝耀騎士 | 小紅書數據採集 | 使用air模式的feapder,自定義csv儲存管道,未來會以更多模式改寫,以及更多功能加入,還迎補充 | 點這裡 |
自動化篇
selenium
| 難度標識 | 項目名 | 補充 | 快捷導航 |
|---|
| 騎士侍從 | 基礎自動操作 | 基本自動化操作 | 點這裡 |
| 騎士侍從 | 模擬登陸 | 練習自動化 | 點這裡 |
| 騎士侍從 | 動作鍊和ifream處理 | 練習自動化 | 點這裡 |
| 騎士侍從 | 無頭瀏覽器和反檢測 | 練習 | 點這裡 |
| 騎士 | 12306模擬登錄 | 多半不可用 | 點這裡 |
| 騎士 | damai網 | 多半不可用 | 點這裡 |
playwright
| 難度標識 | 項目名 | 補充 | 快捷導航 |
|---|
| 騎士 | 郵遞區號 | 通過地址查詢郵政編碼,使用同步方式,包含等待操作以及根據情況選擇不同的表格,同時使用pandas對excel文件進行操作 | 點這裡 |
| 大騎士 | 採用本地瀏覽器進行反爬蟲 | 我們使用自動化時有時會被檢測,我們這裡使用本地瀏覽器進行反爬蟲,並且由於是本地瀏覽器,我們的session狀態和cookie狀態都是存在的,也就是說原本登錄過的網站我們訪問直接就是登錄狀態了,可以方便很多,不需要我們創建瀏覽器的上下文 | 點這裡 |
| 大地騎士 | 採集資料 | 通過網站名採集網站的郵箱電話地址社交媒體鏈接,難點在於每個網站風格完全不一,所有數據也不一併且數量很大,寫正則很不好寫,處理異步也比較麻煩,倉庫只列舉了其中10個頁面,需要編寫者對正則以及異步playwright有一定的了解 | 點這裡 |
| 大騎士 | 反檢測瀏覽器 | 通過大牛的js文件創建一個反檢測的瀏覽器,可以繞過絕大部分的檢測 | 點這裡 |
| 大地騎士 | 起點vip小說爬取 | 通過屏幕快照的方式繞過起點vip小說的css反爬,用到的知識點有:定位盒子,截圖,滑動,處理邊界,合併截圖。此方案不是最優解,歡迎大家補充 | 點這裡 |
進階篇
綜合案例
| 難度標識 | 項目名 | 補充 | 快捷導航 |
|---|
| 騎士 | 某詩文網 | 驗證碼相關,登錄以及圖片驗證碼解決--- ddddocr | 點這裡 |
| 大騎士 | 語言爬蟲 | 利用網絡將文本轉為語言,支持中英韓三國語言 | 點這裡 |
| 大騎士 | b站綜合 | 檢查用戶是否給你點贊,拉去消息列表,拉取點贊列表 | 點這裡 |
| 大地騎士 | 某視頻網站 | m3u8視頻下載,解決帶密鑰以及不帶密鑰情況,m3u8入門級別以及多線程下載 | 點這裡 |
| 大地騎士 | ins爬蟲 | 對於頁面參數提取以及解析json文件 | 點這裡 |
| 大地騎士 | douyin全站數據爬取 | 包括視頻圖片下載,評論爬取,用戶信息爬取... 目前部分接口也開始xb檢測了,如果需要用到被檢測接口,則需要加上xb才可以獲取數據, 現在重新整合簽名,大家在github找到獲取簽名的js文件即可,放到douyin文件同目錄下命名為xb.js即可, up提供了一個在github上別人開源的代碼倉庫,在代碼中標誌了倉庫,目前可以使用 | 點這裡 |
| 大地騎士 | weibo全站數據爬取 | 包括搜索用戶,搜索帖子,下載評論,下載用戶相冊,用戶主頁,用戶信息... | 點這裡 |
| 未知等級 | 爬蟲輪子 | 個人對常用的爬蟲方法進行二次封裝,方便後期開發 | 點這裡 |
js逆向專題
請求頭或響應數據加密
| 難度標識 | 項目名 | 補充 | 快捷導航 |
|---|
| 騎士 | 烯牛數據 | 請求頭加密,響應體加密 | 點這裡 |
| 騎士 | 娛樂指數 | 基礎入門 | 點這裡 |
| 騎士 | 藝恩數據 | 響應體加密 | 點這裡 |
| 騎士 | 行行查 | 響應體加密 | 點這裡 |
| 大騎士 | fjs公共交易 | 混淆參數加密 | 點這裡 |
| 大騎士 | 唯一藝術 | 動態js運行代碼 | 點這裡 |
| 大地騎士 | 某天氣網站 | 動態js 動態key 動態參數反debug | 點這裡 |
| 大地騎士 | 某足球網站 | 請求體多重加密,加密位置難定位 | 點這裡 |
| 大地騎士 | wangyiyun音樂 | 實現全站數據爬取 | 點這裡 |
| 大地騎士 | gds公共交易 | 混淆參數,需要找定位 | 點這裡 |
| 大地騎士 | 某道翻譯 | 請求加密響應解密,難度不大 | 點這裡 |
| 大地騎士 | b站登錄 | rsa加密密碼,極驗三代文字點選,文字點選部分可見驗證碼篇 | 點這裡 |
webPack
| 難度標識 | 項目名 | 補充 | 快捷導航 |
|---|
| 大地騎士 | china五礦 | 基礎webpack,標準版加密算法,簡單,可用多種方式實現(nodejs,python和扣代碼) | 點這裡 |
環境檢測
| 難度標識 | 項目名 | 補充 | 快捷導航 |
|---|
| 輝耀騎士 | redBook | xhs xs環境檢測,需要自己把cookie和localstorage放到文件中 | 點這裡 |
| 輝耀騎士 | bossjob | __zp_s...__環境檢測,每天js都不同,需要補一些環境,並且修改js,有一個module檢測等... | 點這裡 |
| 輝耀騎士 | 猿人學2023第一題 | 魔改md5和aes 刪除部分蜜罐,補充瀏覽器環境即可 | 點這裡 |
| 大地騎士 | 餓了麼參數 | 通過playwright獲取bx_et參數 | 點這裡 |
| 輝耀騎士 | pdd的anti_content參數 | 這個不是補環境,是扣的算法,pdd不同站點其實加密大概差不多,有些對象的值有所差別而已,加密的主函數都是一個邏輯 | 點這裡 |
| 大地騎士 | 更新boss直聘物品點選解ip封鎖,坐標識別就隨便在網上找了一個了 | 這個點選軌跡加密就是極驗三代 | 更新在boss那個文件裡面了 |
wasm加密
| 難度標識 | 項目名 | 補充 | 快捷導航 |
|---|
| 輝耀騎士 | 某航空 | wasm操作內容實現加密解密請求頭參數加密更新阿里系v2檢測阿里系v3檢測(自動化獲取),至此所有加密參數已解決 | 點這裡 |
瀏覽器指紋檢測
| 難度標識 | 項目名 | 補充 | 快捷導航 |
|---|
| 大地騎士 | 易九批 | 首先是加密請求體,其次是tls指紋檢測,目前使用第三方庫過了主頁請求 | 點這裡 |
驗證碼篇
滑塊篇
| 難度標識 | 項目名 | 補充 | 快捷導航 |
|---|
| 大騎士 | JD滑塊 | 我們獲取到圖片之後可以使用ddddocr來進行識別滑塊,然後生成軌跡發送請求即可,我們這裡的軌跡採用大佬的寫法,首先準備一條基準,從左往右手工滑完,然後一個抖動軌跡,之後拼接兩個軌跡即可(不知道為什麼我自己滑的軌跡驗證都不通過,所以直接用了大佬的軌跡了) | 點這裡 |
| 大騎士 | 阿里226 | 此次更新playwright獲取,比較簡單 | 點這裡 |
| 大騎士 | 飛瓜獲取驗證碼滑塊 | 此次更新playwright獲取,比較簡單 | 點這裡 |
點選篇
| 難度標識 | 項目名 | 補充 | 快捷導航 |
|---|
| 輝耀騎士 | 極驗三代點選 | 我們根據請求順序依次請求接口獲取圖片,獲取到圖片信息後送入識別接口獲取點選坐標,獲取到坐標後將坐標轉化,送入js生成軌跡,得到軌跡後請求接口獲取validate | 點這裡 |
Star History
贊助
如果你認為本倉庫對你學習爬蟲和逆向有所幫助,歡迎贊助作者,請作者喝一杯奶茶~! !
(你的支持可以讓作者開心一整天?)