基于中間人截獲的抖音爬蟲

最近剛好有一個(gè)爬抖音的小需求(根據(jù)某關(guān)鍵字爬全部信息),網(wǎng)上找的都不是很滿足自己的需求(或者說網(wǎng)頁改版了),自己寫了個(gè)比較通用(laji)的浮定,有破解了抖音簽名的能發(fā)我一份就更好了(不知羞恥臉)揽涮。

環(huán)境 :python3.x + requests + mitmproxy

首先配置好mitmproxy(不知道如何配置的看這里)狸窘,抖音是HTTPs請求钟些,所以也配好證書烟号,抓包分析,這里不得不提到的一點(diǎn)是windows是用不了mitmproxy命令的厘唾,好在作者考慮到了褥符,給了mitmweb龙誊,以及mitmdump抚垃,這里選擇mitmweb便于分析:

抓包分析

這里抓包有個(gè)小技巧,我們是按照關(guān)鍵字搜索趟大,所以一般鏈接里面會有search字段鹤树,搜索search就好。
點(diǎn)開還有search標(biāo)記的鏈接逊朽,果然就是我們想要的數(shù)據(jù):
請求數(shù)據(jù)

用工具重新請求:
請求后的數(shù)據(jù)

ok罕伯,想要的字段都在里面了。鏈接刷新幾次果然就GG了:
多次請求后返回的數(shù)據(jù)

經(jīng)多次驗(yàn)證叽讳,有三個(gè)字段是必須且不知道怎么生成的追他,好吧,我要的數(shù)據(jù)也不是很多岛蚤,暫時(shí)通過這種中間截獲在再解析的方式就夠了邑狸。那么怎么拿到截獲的數(shù)據(jù)呢?總不能每次都保存網(wǎng)頁吧涤妒?這就是我選擇mitmproxy的原因了单雾,它是基于python的,且很容易進(jìn)行中間的數(shù)據(jù)處理。詳細(xì)說明請看這里
這里我們需要用到response事件進(jìn)行截獲后的數(shù)據(jù)處理就可以了硅堆,具體代碼:

import mitmproxy.http
from mitmproxy import ctx, http
import urllib

import json 
class Spider(object):
    def __init__(self):
        pass
    
    def response(self, flow: mitmproxy.http.HTTPFlow):
        url = urllib.parse.unquote(flow.request.url)
        ctx.log.info(url)
        if 'api.amemv.com/aweme/v1/general/search/?' in url or 'api.amemv.com/aweme/v1/search/' in url:
            response = flow.response.get_text()
            self.parse_response(response)
        else:
            return
    
    def parse_response(self,response):
        response = json.loads(response)
        items = response.get('aweme_list')
        if items:
            for item in items:
                result = {}
                unique_id = item.get('author').get('unique_id')
                if unique_id:
                    result['id'] = unique_id #抖音號
                else:
                    result['id'] = item.get('author').get('short_id')
                result['nickname'] = item.get('author').get('nickname') #用戶名
                result['url'] = item.get('share_url') #小視頻鏈接
                result['like_num'] = item.get('statistics').get('digg_count') #點(diǎn)贊數(shù)
                result['comment_count'] = item.get('statistics').get('comment_count') #評論次數(shù)
                result['share_count'] = item.get('statistics').get('share_count') #分享次數(shù)
                result['info'] = item.get('desc') #視頻說明
                if mongo.find(result) is None:
                    mongo.insert(result)
                    self.save_to_csv(result)

代碼很簡單屿储,找到正常請求完的url所對應(yīng)的數(shù)據(jù)進(jìn)行解析就好,渐逃,最好不要像我上面那樣都寫在一起够掠,這會導(dǎo)致手機(jī)頁面卡在那等我處理完,可以拿出來解析朴乖,但是問題不大(主要是我懶)祖屏。
然后照著上面教程,加個(gè) addons.py

import spider

addons = [
   spider.Spider()
]

cmd到當(dāng)前目錄买羞,運(yùn)行mitmdump -s addons.py袁勺,拿著手機(jī)不停滑動畜普,大功告成期丰。

數(shù)據(jù)

目前只實(shí)現(xiàn)半自動的,有興趣的小伙伴可以試試加上appium實(shí)現(xiàn)全自動吃挑。
github鏈接

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末钝荡,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子舶衬,更是在濱河造成了極大的恐慌埠通,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件逛犹,死亡現(xiàn)場離奇詭異端辱,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)虽画,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門舞蔽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人码撰,你說我怎么就攤上這事渗柿。” “怎么了脖岛?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵朵栖,是天一觀的道長。 經(jīng)常有香客問我柴梆,道長陨溅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任轩性,我火速辦了婚禮声登,結(jié)果婚禮上狠鸳,老公的妹妹穿的比我還像新娘。我一直安慰自己悯嗓,他們只是感情好件舵,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著脯厨,像睡著了一般铅祸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上合武,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天临梗,我揣著相機(jī)與錄音,去河邊找鬼稼跳。 笑死盟庞,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的汤善。 我是一名探鬼主播什猖,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼红淡!你這毒婦竟也來了不狮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤在旱,失蹤者是張志新(化名)和其女友劉穎摇零,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體桶蝎,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡驻仅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了俊嗽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片雾家。...
    茶點(diǎn)故事閱讀 38,617評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡铃彰,死狀恐怖绍豁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情牙捉,我是刑警寧澤竹揍,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站邪铲,受9級特大地震影響芬位,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜带到,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一昧碉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦被饿、人聲如沸四康。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽闪金。三九已至,卻和暖如春论颅,著一層夾襖步出監(jiān)牢的瞬間哎垦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工恃疯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留漏设,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓今妄,卻偏偏與公主長得像愿题,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子蛙奖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 她忽然記起潘酗,很多年以前,雍曾拉著她的手說雁仲,你喜歡花仔夺,以后我們把家里的陽臺上都放滿花;窗簾用你最喜歡的淺藍(lán)色攒砖,書房里...
    蘇一格閱讀 179評論 0 0
  • 1藏鋒 顯露鋒芒缸兔,是使困厄加劇的原因 減少嫉妒 不輕易展示才學(xué) 當(dāng)權(quán)者不是因?yàn)閻鄱鴲郏且驗(yàn)橛枚鴲?警惕有名吹艇,珍...
    聞哥的文字小屋閱讀 1,546評論 0 0
  • 尾隨閉包(Trailing Closures) 如果你需要將一個(gè)很長的閉包表達(dá)式作為最后一個(gè)參數(shù)傳遞給函數(shù)惰蜜,可以使...
    SheBang_閱讀 276評論 0 0
  • 最是夕陽紅,彤云染碧空受神。 窗前延壽客抛猖,檐下辟邪翁。 游子方新路鼻听,飛霜滿舊蓬财著。 念君長顧盼,暮色上蒼穹撑碴。 按仄起平收...
    銓齋閱讀 999評論 29 29