0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何利用Python抓取用戶發(fā)的話題

馬哥Linux運(yùn)維 ? 來(lái)源:腳本之家 ? 作者:j_hao104 ? 2021-09-05 09:37 ? 次閱讀

大多數(shù)APP里面返回的是json格式數(shù)據(jù),或者一堆加密過(guò)的數(shù)據(jù) 。這里以超級(jí)課程表APP為例,抓取超級(jí)課程表里用戶發(fā)的話題。

1、抓取APP數(shù)據(jù)包

表單:

表單中包括了用戶名和密碼,當(dāng)然都是加密過(guò)了的,還有一個(gè)設(shè)備信息,直接post過(guò)去就是。

另外必須加header,一開(kāi)始我沒(méi)有加header得到的是登錄錯(cuò)誤,所以要帶上header信息。

2、登錄

登錄代碼:

import urllib2from cookielib import CookieJarloginUrl = ‘http://120.55.151.61/V2/StudentSkip/loginCheckV4.action’headers = {‘Content-Type’: ‘a(chǎn)pplication/x-www-form-urlencoded; charset=UTF-8’,

‘User-Agent’: ‘Dalvik/1.6.0 (Linux; U; Android 4.1.1; M040 Build/JRO03H)’,‘Host’: ‘120.55.151.61’,‘Connection’: ‘Keep-Alive’,‘Accept-Encoding’: ‘gzip’,‘Content-Length’: ‘207’,}loginData =

‘phoneBrand=Meizu&platform=1&deviceCode=868033014919494&account=FCF030E1F2F6341C1C93BE5BBC422A3D&phoneVersion=16&password=A55B48BB75C79200379D82A18C5F47D6&channel=MXMarket&phoneModel=M040&versionNumber=7.2.1&’cookieJar = CookieJar()opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookieJar))req = urllib2.Request(loginUrl, loginData, headers)loginResult = opener.open(req).read()print loginResult

登錄成功 會(huì)返回一串賬號(hào)信息的json數(shù)據(jù)

和抓包時(shí)返回?cái)?shù)據(jù)一樣,證明登錄成功

3、抓取數(shù)據(jù)

用同樣方法得到話題的url和post參數(shù)

下見(jiàn)最終代碼,有主頁(yè)獲取和下拉加載更新。可以無(wú)限加載話題內(nèi)容。

#!/usr/local/bin/python2.7# -*- coding: utf8 -*-“”“超級(jí)課程表話題抓取”“”import urllib2from cookielib import CookieJarimport json‘’‘ 讀Json數(shù)據(jù) ’‘’def fetch_data(json_data):

data = json_data[‘data’]timestampLong = data[‘timestampLong’]messageBO = data[‘messageBOs’]topicList = []for each in messageBO:topicDict = {}if each.get(‘content’, False):

topicDict[‘content’] = each[‘content’]topicDict[‘schoolName’] = each[‘schoolName’]topicDict[‘messageId’] = each[‘messageId’]topicDict[‘gender’] = each[‘studentBO’][‘gender’]topicDict[‘time’] = each[‘issueTime’]print each[‘schoolName’],

each[‘content’]topicList.append(topicDict)return timestampLong, topicList‘’‘ 加載更多 ’‘’

def load(timestamp, headers, url):headers[‘Content-Length’] = ‘159’loadData = ‘timestamp=%s&phoneBrand=Meizu&platform=1&genderType=-1&topicId=19&phoneVersion=16&selectType=3&channel=MXMarket&phoneModel=M040&versionNumber=7.2.1&’ % timestampreq = urllib2.Request(url, loadData, headers)loadResult = opener.open(req)

.read()loginStatus = json.loads(loadResult).get(‘status’, False)if loginStatus == 1:print ‘load successful!’timestamp, topicList = fetch_data(json.loads(loadResult))load(timestamp, headers, url)else:print ‘load fail’print loadResultreturn FalseloginUrl =

‘http://120.55.151.61/V2/StudentSkip/loginCheckV4.action’topicUrl =

‘http://120.55.151.61/V2/Treehole/Message/getMessageByTopicIdV3.action’headers = {‘Content-Type’: ‘a(chǎn)pplication/x-www-form-urlencoded; charset=UTF-8’,‘User-Agent’: ‘Dalvik/1.6.0 (Linux; U; Android 4.1.1; M040 Build/JRO03H)’,‘Host’: ‘120.55.151.61’,‘Connection’: ‘Keep-Alive’,‘Accept-Encoding’: ‘gzip’,‘Content-Length’: ‘207’,}

‘’‘ ---登錄部分--- ’‘’loginData = ‘phoneBrand=Meizu&platform=1&deviceCode=868033014919494&account=FCF030E1F2F6341C1C93BE5BBC422A3D&phoneVersion=16&password=A55B48BB75C79200379D82A18C5F47D6&channel=MXMarket&phoneModel=M040&versionNumber=7.2.1&’cookieJar = CookieJar()opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookieJar))req = urllib2.Request(loginUrl, loginData, headers)loginResult = opener.open(req).read()loginStatus = json.loads(loginResult).get(‘data’, False)if loginResult:print ‘login successful!’else:print ‘login fail’print loginResult‘’‘ ---獲取話題--- ’‘’topicData =

‘timestamp=0&phoneBrand=Meizu&platform=1&genderType=-1&topicId=19&phoneVersion=16&selectType=3&channel=MXMarket&phoneModel=M040&versionNumber=7.2.1&’headers[‘Content-Length’] = ‘147’topicRequest = urllib2.Request(topicUrl, topicData, headers)topicHtml = opener.open(topicRequest).read()topicJson = json.loads(topicHtml)topicStatus = topicJson.get(‘status’, False)print topicJsonif topicStatus == 1:print ‘fetch topic success!’timestamp, topicList = fetch_data(topicJson)load(timestamp, headers, topicUrl)

結(jié)果:

562957e4-0dd5-11ec-8fb8-12bb97331649.jpg

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    6715

    瀏覽量

    88311
  • APP
    APP
    +關(guān)注

    關(guān)注

    33

    文章

    1557

    瀏覽量

    72155
  • python
    +關(guān)注

    關(guān)注

    53

    文章

    4753

    瀏覽量

    84078

原文標(biāo)題:利用Python爬蟲(chóng)抓取手機(jī)APP的傳輸數(shù)據(jù)

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    利用Python腳本登錄到交換機(jī)并創(chuàng)建VLAN

    本文將詳細(xì)介紹如何利用Python腳本登錄到交換機(jī)并創(chuàng)建VLAN。
    的頭像 發(fā)表于 08-12 17:59 ?283次閱讀

    蘋(píng)果Apple Silicon芯片曝安全隱患:黑客可利用漏洞竊取用戶數(shù)據(jù)

    據(jù)悉,黑客可借助此漏洞獲取加密密鑰,進(jìn)而盜取用戶個(gè)人信息。DMP作為內(nèi)存系統(tǒng)中的角色,負(fù)責(zé)推測(cè)當(dāng)前運(yùn)行代碼所需訪問(wèn)的內(nèi)存地址。黑客則借此可預(yù)測(cè)下一步需獲取的數(shù)據(jù)位,以此干擾數(shù)據(jù)的預(yù)取過(guò)程,進(jìn)而獲悉用戶敏感數(shù)據(jù)。此類攻擊行為被稱為“Go Fetch”操作。
    的頭像 發(fā)表于 03-22 10:30 ?619次閱讀

    從人生、歷史到單片機(jī)的話題討論

    我們來(lái)看單片機(jī) 的例子,讀者可能會(huì)擔(dān)心單片機(jī)(又稱MCU,或微控制器) 過(guò)于專業(yè)而無(wú)法理解。完全沒(méi)必要!在這里我們僅借它談?wù)撘幌掠嘘P(guān)時(shí)間的話題,順帶提一下單片機(jī)系統(tǒng)的概念。
    的頭像 發(fā)表于 12-05 10:35 ?451次閱讀
    從人生、歷史到單片機(jī)<b class='flag-5'>的話題</b>討論

    話題通信接口的定義和運(yùn)行效果

    ,將驅(qū)動(dòng)相機(jī)并發(fā)布圖像話題,此時(shí)的話題數(shù)據(jù)使用的是ROS中標(biāo)準(zhǔn)定義的Image圖像消息; 第二個(gè)節(jié)點(diǎn),會(huì)運(yùn)行視覺(jué)識(shí)別功能,識(shí)別目標(biāo)的位置,這個(gè)位置我們希望封裝成話題消息,發(fā)布出去,誰(shuí)需要使用誰(shuí)就來(lái)訂閱; 第三個(gè)節(jié)點(diǎn),訂閱位
    的頭像 發(fā)表于 12-01 15:32 ?314次閱讀
    <b class='flag-5'>話題</b>通信接口的定義和運(yùn)行效果

    Python運(yùn)行環(huán)境有哪些

    以運(yùn)行在Java虛擬機(jī)上。JPython提供了與Java的互操作性,可以讓開(kāi)發(fā)者利用Python的靈活性和簡(jiǎn)潔性來(lái)開(kāi)發(fā)Java應(yīng)用程序。 IronP
    的頭像 發(fā)表于 11-29 16:14 ?1652次閱讀

    python自帶的idle怎么進(jìn)入

    詳細(xì)介紹Python的IDLE的各個(gè)方面,包括如何進(jìn)入IDLE、IDLE的功能和特點(diǎn)以及如何使用IDLE進(jìn)行編程和調(diào)試等。 首先,進(jìn)入Python的IDLE非常簡(jiǎn)單。對(duì)于Windows用戶,可以在
    的頭像 發(fā)表于 11-29 14:51 ?1870次閱讀

    神秘又有趣的話題——芯片引腳順序!

    親愛(ài)的“芯”朋友,你們有沒(méi)有發(fā)現(xiàn),每顆芯片上都布滿了密密麻麻的引腳,猶如一座迷宮,讓人無(wú)從下手?今天,我們一起來(lái)揭開(kāi)這個(gè)迷宮的神秘面紗,探索一下這個(gè)既神秘又有趣的話題——芯片引腳順序!芯片,這個(gè)看似
    的頭像 發(fā)表于 11-28 09:33 ?1.2w次閱讀
    神秘又有趣<b class='flag-5'>的話題</b>——芯片引腳順序!

    logcat命令抓取日志方法

    命令抓取日志 logcat -b main -b system -b crash -r 1024 -n 5 -f android.log -v threadtime -b:加載可供查看的緩沖區(qū)的日志
    的頭像 發(fā)表于 11-23 17:31 ?894次閱讀
    logcat命令<b class='flag-5'>抓取</b>日志方法

    python中各種函數(shù)的用法

    ()函數(shù):用于輸出內(nèi)容到控制臺(tái)。 例如:print("Hello, World!"),將輸出"Hello, World!"。 input()函數(shù):用于獲取用戶輸入的值。 例如:name = input
    的頭像 發(fā)表于 11-23 15:48 ?621次閱讀

    python中input怎么輸入3個(gè)值

    Python 中,可以使用 input() 函數(shù)來(lái)獲取用戶的輸入。如果你想要輸入多個(gè)值,可以根據(jù)具體的需求使用以下方法。 方法一:使用多個(gè) input 函數(shù) 最簡(jiǎn)單的方法是使用多個(gè) input
    的頭像 發(fā)表于 11-23 15:31 ?6649次閱讀

    Python自帶的命令窗口

    Python自帶的命令窗口,也稱為Python交互式解釋器,是Python編程語(yǔ)言的一個(gè)重要工具,它允許用戶在命令行界面中輸入和執(zhí)行Python
    的頭像 發(fā)表于 11-22 14:02 ?709次閱讀

    如何看待Python爬蟲(chóng)的合法性?

    Python爬蟲(chóng)是一種自動(dòng)化程序,可以從互聯(lián)網(wǎng)上獲取信息并提取數(shù)據(jù)。通過(guò)模擬網(wǎng)頁(yè)瀏覽器的行為,爬蟲(chóng)可以訪問(wèn)網(wǎng)頁(yè)、抓取數(shù)據(jù)、解析內(nèi)容,并將其保存到本地或用于進(jìn)一步分析
    的頭像 發(fā)表于 11-14 10:35 ?468次閱讀

    怎么在Python中實(shí)現(xiàn)截圖功能

    利用Python自帶的win32api和win32con、win32gui等模塊,我們能執(zhí)行許多windows下的自動(dòng)化操作。比如兩個(gè)窗口的自動(dòng)點(diǎn)擊操作,從軟件中的窗口復(fù)制文本到txt中,甚至是截圖
    的頭像 發(fā)表于 11-03 15:32 ?833次閱讀
    怎么在<b class='flag-5'>Python</b>中實(shí)現(xiàn)截圖功能

    利用Python發(fā)送郵件的 3 種方式

    1. 前言 郵件,作為最正式規(guī)范的溝通方式,在日常辦公過(guò)程中經(jīng)常被用到 我們都知道 Python內(nèi)置了對(duì) SMTP 的支持,可以發(fā)送純文本、富文本、HTML 等格式的郵件 本文將聊聊利用
    的頭像 發(fā)表于 11-02 11:37 ?829次閱讀

    如何利用Python和pandas來(lái)處理json數(shù)據(jù)

    了如何利用Python和pandas(Python的第三方庫(kù))來(lái)處理json數(shù)據(jù),主要內(nèi)容包含: json數(shù)據(jù)簡(jiǎn)介 常用json數(shù)據(jù)轉(zhuǎn)化網(wǎng)站 json數(shù)據(jù)和Python數(shù)據(jù)的轉(zhuǎn)化 pa
    的頭像 發(fā)表于 11-01 10:59 ?1672次閱讀
    如何<b class='flag-5'>利用</b><b class='flag-5'>Python</b>和pandas來(lái)處理json數(shù)據(jù)