羽中飞人 2024-04-17 14:07 采纳率: 48.1%
浏览 90
已结题

微信小程序的爬虫问题

想用python爬一个微信小程序的数据
用PC端的微信登录上了这个小程序
并用fiddler分析了请求头和请求体的表格
post请求,有请求头(header),和请求体的表格(params)

params = {"sessionKey":"","data":{},"appVersion":"2.2.0","apiVersions":"v1","deviceCode":"miniApp","platform":0,"timestamp":1713316438,"token":"97c08fb03b2b2eaf86ff3d645d8b785b"}
response = requests.post(url, data=json.dumps(params), headers=headers)

返回值是400
可以排除以下原因:url没有问题,请求头和param表格体是复制的fiddler上的
我觉得是不是params上的token是加密计算出来的,其它真的想不到还有什么问题
如果这个token是加密计算的,如何破解?
这个小程序,如果需要,我可以私信给大家

  • 写回答

25条回答 默认 最新

  • 阿里嘎多学长 2024-04-17 14:11
    关注
    获得0.15元问题酬金

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    根据您提供的链接内容,您想要使用Python爬取微信小程序的数据,并且在尝试使用Fiddler分析请求头和请求体时遇到了问题。您的POST请求返回了400错误,您已经排除了URL和请求头及参数表格体的问题,并怀疑问题可能出在params中的token字段上,因为它可能是加密计算出来的。

    首先,要明确的是,微信小程序的数据通常受到加密保护,直接爬取数据可能违反相关服务条款。然而,为了教育目的,我可以提供一些关于如何处理可能的加密token的一般性建议。

    在许多情况下,token是通过某种形式的加密算法生成的,这可能涉及到用户的登录状态、设备信息或其他特定于会话的数据。如果您没有访问这些数据的权限,那么生成正确的token可能会很困难。但是,如果您能够通过合法途径获取到token生成的算法或规则,您可以尝试使用Python来模拟这个过程。

    以下是一个示例代码,展示如何使用Python发送带有加密token的POST请求。请注意,这个代码只是一个模板,实际的加密算法和token生成逻辑需要您根据实际情况来确定。

    import requests
    import json
    import hashlib
    import time
    
    # 假设的token生成函数,您需要替换为实际的逻辑
    def generate_token(session_key, user_id, device_info):
        # 这里只是一个示例,实际的逻辑可能涉及到复杂的加密算法
        return hashlib.sha256((session_key + str(user_id) + device_info + str(time.time())).encode()).hexdigest()
    
    # 从Fiddler获取的请求头和请求体的参数
    headers = {
        # ... 这里填写您的请求头信息 ...
    }
    
    params = {
        "sessionKey": "您的sessionKey",
        "data": {},
        "appVersion": "2.2.0",
        "apiVersions": "v1",
        "deviceCode": "miniApp",
        "platform": 0,
        "timestamp": int(time.time()),
        # 使用上面定义的函数生成token
        "token": generate_token("您的sessionKey", "用户ID", "设备信息")
    }
    
    # 发送POST请求
    url = "您的请求URL"
    response = requests.post(url, data=json.dumps(params), headers=headers)
    
    # 检查响应状态码
    if response.status_code == 200:
        print("请求成功!")
        # 处理响应数据
    else:
        print("请求失败,状态码:", response.status_code)
        # 处理错误情况
    

    请记住,这个代码只是一个示例,实际的token生成逻辑可能更加复杂。如果您没有合法的途径来获取token的生成规则,我建议您不要尝试破解或绕过任何形式的加密保护。遵守相关法律法规和服务条款是非常重要的。如果您需要获取微信小程序的数据,最好的方式是通过官方提供的API或与小程序开发者合作。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 4月25日
  • 创建了问题 4月17日