weibo算网讲解-逆向

这个代码主要用于模拟在微博超话(微博上的某个特定话题)中的签到操作。下面是对代码的详细分析:

  1. 导入必要的库

    • hashlib:用于生成SHA-512哈希值。
    • requests:用于发送HTTP请求。
  2. 常量定义

    • KEY2:定义一个常量字符串"10BA195010",用作生成哈希值的部分密钥。
  3. 函数converByte2Int

    • 该函数将字节(ASCII码)转换为对应的整数值。如果字节值代表一个数字字符('0'-'9'),则减去48;如果是大写字母('A'-'F'),则减去55;如果是小写字母('a'-'f'),则减去87。
  4. 函数getS

    • 接受一个用户ID(UID),生成一个字符串KEY1,其中包含UIDKEY2
    • KEY1KEY2分别进行SHA-512哈希,生成key1_skey2_s
    • 通过一个循环生成最终的签名字符串ret。每次循环中,通过key2_s中的某个字符的ASCII码(经过converByte2Int转换),确定key1_s中的某个字符,并将其添加到ret中。
    • 最终返回生成的签名字符串ret
  5. 函数qiandao

    • 接受用户ID(uid)、用户会话ID(gsid)和超话ID(pagid)。
    • 通过getS函数生成签名字符串s
    • 定义请求头,其中包括User-agent信息。
    • 构建签到请求的URL,URL中包含多个参数(如pagidKEY2gsids等)。
    • 通过requests.get发送GET请求,进行签到操作。
    • 输出服务器响应结果。
  6. 主函数

    • 设置用户ID(uid)、用户会话ID(gsid)和超话ID(pagid)。
    • 调用qiandao函数进行签到操作。

这个代码主要功能是通过模拟HTTP请求的方式在微博超话中进行签到,生成特定的签名字符串来绕过可能的验证机制。以下是代码的核心部分示例调用:

import hashlib

import requests

KEY2 = "10BA195010"


def converByte2Int(b):
    if b - 48 <= 9: return b - 48
    if b - 65 > 5: return b - 87
    return b - 55


def getS(UID):
    KEY1 = "5l0WXnhiY4pJ794KIJ7Rw5F45VXg9sjo%s%s" % (UID, KEY2)
    key1_s = hashlib.sha512(KEY1.encode('utf-8')).hexdigest()
    key2_s = hashlib.sha512(KEY2.encode('utf-8')).hexdigest()
    ret = ""
    j = 0
    for _ in range(8):
        k = converByte2Int(ord(key2_s[j]))
        j += k
        ret += key1_s[j]
    return ret


def qiandao(uid, gsid, pagid):
    s = getS(uid)
    headers = {

        "User-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36",

    }
    url = 'https://api.weibo.cn/2/page/button?request_url=http%3A%2F%2Fi.huati.weibo.com%2Fmobile%2Fsuper%2Factive_checkin%3Fpageid%3D' + pagid + '%26in_page%3D1&networktype=wifi&extparam=LESSERAFIM&accuracy_level=0&uicode=10000011&moduleID=700&wb_version=5256&c=android&s=' + s + '&ft=0&ua=samsung-SM-G988N__weibo__11.10.1__android__android5.1.1&wm=5311_4002&from=' + KEY2 + '&gsid=' + gsid + '&lang=zh_CN&skin=default&sflag=1&oriuicode=10000010_10000003_10000003&luicode=10000003&android_id=ff9a650dd21bce91'
    resp = requests.get(url=url, headers=headers)
    print(resp.text)


if __name__ == "__main__":
    uid = "用户id"
    gsid = "" #sub
    pagid = "10080892b1f367dec8ee89a39109d0b5fe9c0d"  #超话id
    qiandao(uid, gsid, pagid)
 

python

复制代码

if __name__ == "__main__": uid = "用户id" # 请替换为实际的用户ID gsid = "" # 请替换为实际的会话ID pagid = "10080892b1f367dec8ee89a39109d0b5fe9c0d" # 请替换为实际的超话ID qiandao(uid, gsid, pagid)

调用qiandao函数时,需要传入实际的用户ID、会话ID和超话ID。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值