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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

馬哥Linux運維 ? 來源:腳本之家 ? 作者:j_hao104 ? 2021-09-05 09:37 ? 次閱讀

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

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

表單:

表單中包括了用戶名和密碼,當然都是加密過了的,還有一個設備信息,直接post過去就是。

另外必須加header,一開始我沒有加header得到的是登錄錯誤,所以要帶上header信息。

2、登錄

登錄代碼:

import urllib2from cookielib import CookieJarloginUrl = ‘http://120.55.151.61/V2/StudentSkip/loginCheckV4.action’headers = {‘Content-Type’: ‘application/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

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

和抓包時返回數(shù)據(jù)一樣,證明登錄成功

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

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

下見最終代碼,有主頁獲取和下拉加載更新??梢詿o限加載話題內容。

#!/usr/local/bin/python2.7# -*- coding: utf8 -*-“”“超級課程表話題抓取”“”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’: ‘application/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)

結果:

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

責任編輯:haq

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

    關注

    8

    文章

    6774

    瀏覽量

    88667
  • APP
    APP
    +關注

    關注

    33

    文章

    1563

    瀏覽量

    72284
  • python
    +關注

    關注

    54

    文章

    4761

    瀏覽量

    84317

原文標題:利用Python爬蟲抓取手機APP的傳輸數(shù)據(jù)

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Python庫解析:通過庫實現(xiàn)代理請求與數(shù)據(jù)抓取

    Python中,有多個庫可以幫助你實現(xiàn)代理請求和數(shù)據(jù)抓取。這些庫提供了豐富的功能和靈活的API,使得你可以輕松地發(fā)送HTTP請求、處理響應、解析HTML/XML/JSON數(shù)據(jù),以及進行復雜的網(wǎng)絡操作。
    的頭像 發(fā)表于 10-24 07:54 ?72次閱讀

    如何利用海外爬蟲IP進行數(shù)據(jù)抓取

    利用海外爬蟲IP進行數(shù)據(jù)抓取需要綜合考慮多個方面。
    的頭像 發(fā)表于 10-12 07:54 ?110次閱讀

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

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

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

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

    從人生、歷史到單片機的話題討論

    我們來看單片機 的例子,讀者可能會擔心單片機(又稱MCU,或微控制器) 過于專業(yè)而無法理解。完全沒必要!在這里我們僅借它談論一下有關時間的話題,順帶提一下單片機系統(tǒng)的概念。
    的頭像 發(fā)表于 12-05 10:35 ?482次閱讀
    從人生、歷史到單片機<b class='flag-5'>的話題</b>討論

    話題通信接口的定義和運行效果

    ,將驅動相機并發(fā)布圖像話題,此時的話題數(shù)據(jù)使用的是ROS中標準定義的Image圖像消息; 第二個節(jié)點,會運行視覺識別功能,識別目標的位置,這個位置我們希望封裝成話題消息,發(fā)布出去,誰需要使用誰就來訂閱; 第三個節(jié)點,訂閱位
    的頭像 發(fā)表于 12-01 15:32 ?388次閱讀
    <b class='flag-5'>話題</b>通信接口的定義和運行效果

    python自帶的idle怎么進入

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

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

    親愛的“芯”朋友,你們有沒有發(fā)現(xiàn),每顆芯片上都布滿了密密麻麻的引腳,猶如一座迷宮,讓人無從下手?今天,我們一起來揭開這個迷宮的神秘面紗,探索一下這個既神秘又有趣的話題——芯片引腳順序!芯片,這個看似
    的頭像 發(fā)表于 11-28 09:33 ?1.3w次閱讀
    神秘又有趣<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 ?982次閱讀
    logcat命令<b class='flag-5'>抓取</b>日志方法

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

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

    python中input怎么輸入3個值

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

    Python自帶的命令窗口

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

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

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

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

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

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

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