Python技术实现微信数据库的信息获取 (python爬取微信数据库)

随着微信的盛行,越来越多的人开始使用微信聊天、分享图片、视频、文章,以及进行交流等活动。在这样一个庞大的社交平台上,意味着大量信息的传递、存储以及管理。那么对于那些需要从微信中获取数据,进一步分析和利用信息的人来说,如何才能准确、有效地从微信数据库中提取所需数据呢?答案就是Python技术。

Python技术的广泛应用

Python是一种被用来处理和分析大量数据的编程语言。它是一种非常流行的语言,应用广泛,在数据处理、机器学习、科学计算和网站开发等领域都有广泛应用。

对于从微信中提取所需数据的需求,Python语言也可以提供一个强大的解决方案。Python语言的高级特性使得它成为了大量任务中的更佳选择,从数据采集到数据处理,再到数据可视化,Python都有着强大的工具支持。

使用Python技术获取微信数据库信息的方法

Python技术主要通过微信开发者平台提供的开放API(应用程序接口)来实现从微信提取所需数据的功能。

要使用Python获取微信数据库信息,需要按照以下步骤进行:

之一步:在微信开发者平台上注册并获取自己的开发者ID和秘钥。

第二步:使用Python的requests库和微信API进行交互,获取access_token,这个是从微信服务器获取数据的凭证。

第三步:使用Python的requests库和微信API获取用户的授权列表。

第四步:使用Python的requests库和微信API根据授权列表获取对应用户的各种信息,包括个人信息、朋友圈、聊天记录等。

第五步:使用Python的数据分析库对获取到的数据进行处理。

优势分析

Python技术的优势主要在于以下方面:

1、广泛应用

Python技术被广泛应用在各个领域,不仅接口丰富且使用简单。

2、高效性

Python语言比其他语言更加易学易用,也更加高效。

3、数据处理

Python技术具备非常强大的数据处理能力,可以方便地完成数据采集、清洗、转换、分析等各种操作。

4、可视化

Python技术可以非常方便地实现数据可视化,使得数据更加直观、易懂。

结论

对于那些需要获取微信相关数据的人来说,Python技术的应用是非常必要的,它可以方便地从微信数据库中提取所需的数据并进行分析处理。使用Python技术可以提高效率、提升工作效果,是数据分析人员和程序员的利器。无论是用于聊天记录、好友列表、朋友圈动态数据的获取,还是分析报表、用户画像的制作,Python技术都可以提供强大的支持,助力其实现更好的数据分析和应用。

相关问题拓展阅读:

  • 4种Python爬虫(3. 微信小程序,如,超级猩猩)
  • python能看微信记录吗
  • python爬取微信好友运动步数

4种Python爬虫(3. 微信小程序,如,超级猩猩)

目录:

1. PC网页爬虫

2. H5网页爬虫

3. 微信小程序爬虫

4. 手机APP爬虫

爬取超级猩猩的课表,该平台仅提供了微信小程序这一个途径,前面两种针对html网槐举页的爬取方式都不再适用。

采用抓包分析是我们制定方案的之一步。

我用的Mac电脑,fiddler只有一个简化版,所以另找了Charles这个类似的软件。启动Charles的代理,在手机WIFI中设置好对应的代理就可以开抓了。但是,抓到的https包的内容都是乱码,咋办?

Charles中提供了ssl证书,在手机端安装证书即可。推荐使用iPhone,直接安装描述文件即可。Android手机必须使用吵配系统版本在7.0以下的才行,7.0以上还需要反编译什么的,太麻烦了。

很容易的定位到了超级猩猩微信小程序载入课表的后台接口。拿这个URL在浏览器里访问试试,直接返回了json结果!超级猩猩很友好!

提取对应的铅碰碧URL,放到浏览器中验证,也可以支持返回json包,剩下就是分析一下这个json的数据结构,按照需要的方式导出了。

直接通过接口的爬取效率非常高,几秒钟就拉取了全国各个门店的排课,相当舒心。(下图的录屏没有进行加速)

最后一个挑战就是对只有Android/iOS的APP端应用数据的爬取。请看下一章

请点击:

python能看微信记录吗

python是一种编程语言,它看记录怎么看。应该弯兄是说能橡毁不能用它写个程序,梁闹备用来看记录。这个在理论上是可以的!

导出微信聊天db文件

手机端导出

发现现在的Android手机都很难root,而db文件肯定在微信的应用目录下。拿不出来的。

电脑端导出(mac)

从~/Library/Containers/com.tencent.xinWeChat/Data/Library/Application\ Support/com.tencent.xinWeChat下找到对应账号的数据存储目录。

屏幕快照下午5.46.38.png

Message

存储聊天消息

Contact

存储联系人信息

获取db密钥

打开微信

命令行运行 lldb -p $(pgrep WeChat)

在 lldb 中输入 br set -n sqlite3_key, 回车

还是在 lldb 中,输入 c, 回车

扫码登录微信

这时候回到 lldb 界面, 输入 memory read –size 1 –format x –count 32 $rsi, 回车

命令行回显结果

0x: 0xab 0xcd 0xef 0xab 0xcd 0xef 0xab 0xcd

0x: 0xab 0xcd 0xef 0xab 0xcd 0xef 0xab 0xcd

0x: 0xab 0xcd 0xef 0xab 0xcd 0xef 0xab 0xcd

0x: 0xab 0xcd 0xef 0xab 0xcd 0xef 0xab 0xcd

忽略左边的地址( 0x: ,0x:),从左到右,从上到下,把形如 0xab 0xcd 的数据拼起来,然后去掉所有的 “0x”和空格、换行, 得到 64 个字符的字符串,这就是 微信数据库的 key

可以遇到的问题(来自网上,我在使用过程中没有这个问题))

*.db 文件要在另一台 PC 或 Mac 上 登录微信, 才能被关闭,否则里面桥氏档的聊天记录不是最新的;当然也可以强制调用 wal_checkpoint, 不过作为土办法,在另一台电脑上登一下微信也无妨。

那么wal_checkpoint是什么?是一个sqlite命令,可以参考:

db browser for sqlite

db数据库可视化工具,打开需要查看的数据库文件:

屏幕快照下午6.43.43.png

先输入0x,然后把上面得到的密钥复制进来。由于编码的问题,可能复制进来会出核烂现打不开的情况,你可以先把密钥复制到软件执行sql语句的地方,然后在复制。一会python读取db数据库会参考上面的设置参数。

python解密db数据库

这里需要使用sqlite来操作数据库,而sqlite本身是不支持加密和解密的,那么这部分就需要我们自己来完成,但是网上已经有开源库了。

使用到的python库

加密解密db库——pysqlcipher3。

加密算法库——sqlcipher。

微信db加密库——wcdb

参考文档

db解密

路径配置

# 加密DB文件绝对路径,微信DB加密方案参考:    

DB_PATH = ‘/Users/pengdaosong/pds/python/PythonStudy/db/encryption/’

# 解密后生成不加密DB文件绝对路径

DB_OUT_PATH = ‘/Users/pengdaosong/pds/python/PythonStudy/db/decrypt/’

DB_OUT_ON_PATH = ‘/Users/pengdaosong/pds/python/PythonStudy/db/json/’

DB_ROOT_PATH = ‘/Users/pengdaosong/pds/python/PythonStudy/db/’敏乱

# 解密数据库key

DB_KEY = “x”1133d3dd61764a9e80699b42b61e443515aeb00cf4f5497d9729adcb6c8e78e2””

# 新的DB加密数据KEY,如果为空,者不加密

DB_NEW_KEY = ”

这里说一下DB_KEY的写法,官网写法是这样的:”x’2DD29CA851E7B56E4697B0E1FD761A05CE4D1B628663F411A8086D99′”;但是这样写始终是不能打开数据库的,始终报“不是一个数据库文件”。换成上面的写法后可以打开。所以,这里如果不能打开,把这两种写都试一试。像在密钥前加’0x’等都可以试一试。

解密

import pysqlcipher3.dbapi2 as sqliteimport config as cfdef decrypt(path, fileName):

   # ———————————————————————————————————数据库操作———————————————————————————————————

   # 参考:

   # 连接数据库如果文件不存在,会自动在当前目录创建:

   db = sqlite.connect(path + fileName)

   # 创建一个Cursor:

   db_cursor = db.cursor()

   # ————————————————————————————————————解密数据DB———————————————————————————————————

   # sqlcipher加密解密参考:

   # sqlcipher开源库qlcipher/issues

   # sqlcipherApi:

   db_cursor.execute(“PRAGMA key=’” + cf.DB_KEY + “‘;”)

   db_cursor.execute(“PRAGMA cipher_compatibility=3;”)

   db_cursor.execute(“PRAGMA cipher_page_size=1024;”)

   db_cursor.execute(“PRAGMA kdf_iter=64000;”)

   db_cursor.execute(“PRAGMA cipher_hmac_algorithm=HMAC_SHA1;”)

   db_cursor.execute(“PRAGMA cipher_kdf_algorithm=PBKDF2_HMAC_SHA1;”)

   # 将解密文件导入新的DB文件

   decrypt = cf.DB_OUT_PATH + ‘decrypt_’ + fileName

   db_cursor.execute(“ATTACH DATABASE ‘” + decrypt + “‘ AS db_de KEY ‘” + cf.DB_NEW_KEY + “‘;  — empty key will disable encryption”)

   db_cursor.execute(“SELECT sqlcipher_export(‘db_de’);”)

   db_cursor.execute(“DETACH DATABASE db_de;”)

   db_cursor.close()

更多加密参数设置参考:sqlcipher使用文档

将数据库导出为json

import pysqlcipher3.dbapi2 as sqliteimport config as cf_wximport dbToJsondef parse(path, fileName):

   db = sqlite.connect(path + fileName)

   db_cursor = db.cursor()

   all_table = db_cursor.execute(“SELECT name FROM sqlite_master WHERE type = ‘table’;”).fetchall()

   print(all_table)

   for x in all_table:

table_name = x

print(“Searching”, table_name)

try:

t = db_cursor.execute(‘SELECT * FROM ‘ + table_name + ‘;’)

dbToJson.tableToFile(db_cursor,table_name)  

print(‘\n’)

except BaseException as e:

print(e)

continue

   db_cursor.close()

   db.close()

import jsonimport numpy as npimport config as cf_wxclass MyEncoder(json.ONEncoder):

 def default(self, obj):

     if isinstance(obj, np.ndarray):

return obj.tolist()

     elif isinstance(obj, bytes):

# utf-8会报错:’utf-8′ codec can’t decode byte 0xfc in position 14: invalid start byte

return str(obj, encoding=’ISO’)

     return json.ONEncoder.default(self, obj)def tableToJson(cursor, table):

 query = ‘SELECT * FROM ‘ + table

 rows = cursor.execute(query)

 items =

 for row in rows:

     item = {}

     for key in cursor.description:

item.update({key: value for value in row})

     items.append(item)

 # 注意不要写道for里面了,不然数据结果不对    

 js = json.dumps(items, ensure_ascii=False, cls=MyEncoder, indent=4)

 print(js)

 print(‘—-‘)def tableToFile(cursor, table):

 query = ‘SELECT * FROM ‘ + table

 rows = cursor.execute(query)

 items =

 for row in rows:

     item = {}

     # 参考:

     for idx, col in enumerate(cursor.description):

value = row

item.update({col: value})

     items.append(item)

 # 注意不要写道for里面了,不然数据结果不对

 json_name = “”

 if(table.endswith(‘.db’)):

     json_name = table

 else:

     json_name = table  file = open(cf_wx.DB_OUT_ON_PATH + json_name + “.json”, ‘w+’)

 # ensure_ascii默认为True,汉字会被编码成’\u4e00\u6839\u806a’

 js = json.dumps(items, ensure_ascii=False, cls=MyEncoder, indent=4)

 file.write(js)

 file.close()

关联

查看聊天消息数据发现,不能把聊天消息数据表和对应的聊天人对应起来,因为消息表并没有存是和谁在聊天。如果不能和对应的人联系起来,岂不是感觉很不好。那这里就要用到联系人数据库了,密钥和上面的一样。打开联系人的数据查看:

屏幕快照下午7.30.41.png

python爬取微信好友运动步数

emm

微信分享的url本身就有openid,伪造Request Headers然后拿到返回的信息就行了

没玩过,思路是监听微信的通讯,抓包调试。

不懂你要这些有什么用处。

关于python爬取微信数据库的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

香港服务器首选树叶云,2H2G首月10元开通。
树叶云(shuyeidc.com)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/240677.html<

(0)
运维的头像运维
上一篇2025-04-23 23:52
下一篇 2025-04-23 23:53

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注