某音init_gorgon(),x-gorgon分析和数据的获取(3)

编程知识 行业动态 更新时间:2024-06-13 00:19:58

数据获取第三部分

  • 一、go请求抖音接口
  • 二、go获取数据
  • 三、python自动化获取抖音iid
  • 四、python服务端代码部署签名算法

一、go请求抖音接口

1.获取直播间列表接口

https://webcast.amemv.com/webcast/feed/?cate_id=0&channel_id=21&content_type=0&req_type=0&show_location=0&style=2&sub_channel_id=0&sub_type=live_merge&tab_id=1&type=live&max_time=1632617241765&req_from=feed_loadmore&enter_source=live_merge-live_cover&webcast_sdk_version=1560&webcast_language=zh&webcast_locale=zh_CN&os_api=22&device_type=MI%209&ssmix=a&manifest_version_code=110501&dpi=240&uuid=863254316123529&app_name=aweme&version_name=11.5.0&ts=1632617268&cpu_support64=false&app_type=normal&ac=wifi&host_abi=armeabi-v7a&update_version_code=11509900&channel=gdt_growth14_big_yybwz&_rticket=1632617268230&device_platform=android&iid=1539749293618855&version_code=110500&mac_address=00%3AF4%3A8D%3A7F%3AEB%3AED&cdid=26ef06f3-d0c5-4ed1-bc88-3bca82ce7966&openudid=10d8232e457a66ec&device_id=3825946774998071&resolution=1280*720&os_version=5.1.1&language=zh&device_brand=Android&aid=1128&mcc_mnc=46007

接口可变参数
max_time 下一页游标,请求接口后返回下一页的游标
ts 时间戳
_rticket 毫秒时间戳
iid和device_id 用户唯一表示(可能被抖音封禁)

url := fmt.Sprintf("https://webcast.amemv/webcast/feed/?cate_id=0&channel_id=21&content_type=0&req_type=0&show_location=0&style=2&sub_channel_id=0&sub_type=live_merge&tab_id=1&type=live&max_time=%v&req_from=feed_loadmore&enter_source=live_merge-live_cover&webcast_sdk_version=1560&webcast_language=zh&webcast_locale=zh_CN&os_api=22&device_type=MI9&ssmix=a&manifest_version_code=110501&dpi=240&uuid=351564010359305&app_name=aweme&version_name=11.5.0&ts=%v&cpu_support64=false&app_type=normal&ac=wifi&host_abi=armeabi-v7a&update_version_code=11509900&channel=gdt_growth14_big_yybwz&_rticket=%v&device_platform=android&iid=%v&version_code=110500&mac_address=00:F4:8D:7F:EB:ED&cdid=06f5e02b-6343-41d0-90a5-d9851444b1c3&openudid=f1b36729d56797e4&device_id=%v&resolution=1280*720&os_version=5.1.1&language=zh&device_brand=Android&aid=1128&mcc_mnc=46007",
			max_time, strTs, strRticket,global.USERS[i].IID, global.USERS[i].DevId)

2.获取直播间观看人数列表

https://webcast.amemv.com/webcast/ranklist/room/7011033733058890530/contributor/?sec_anchor_id=MS4wLjABAAAASz7PwznGnQ0NEVObD7NesWZFHCuQ57jOxScjfR2Qdjk&room_id=7011033733058890530&rank_type=30&webcast_sdk_version=1560&webcast_language=zh&webcast_locale=zh_CN&os_api=22&device_type=MI%209&ssmix=a&manifest_version_code=110501&dpi=240&uuid=863254598923521&app_name=aweme&version_name=11.5.0&ts=1632384451&cpu_support64=false&app_type=normal&ac=wifi&host_abi=armeabi-v7a&update_version_code=11509900&channel=gdt_growth14_big_yybwz&_rticket=1632384452081&device_platform=android&iid=2736017703177928&version_code=110500&mac_address=00%3AF4%3A8D%3A7F%3AEB%3AED&cdid=5ab13fd4-8b6b-4b4f-8048-d4ccc69e3730&openudid=42934351239ad324&device_id=1055991630410519&resolution=720*1280&os_version=5.1.1&language=zh&device_brand=Android&aid=1128&mcc_mnc=46007

可变参数
room_id :7011033733058890530
sec_anchor_id = MS4wLjABAAAASz7PwznGnQ0NEVObD7NesWZFHCuQ57jOxScjfR2Qdjk
ts=1632384451
_rticket 时间戳除以1000
iid和device_id 用户唯一表示(可能被抖音封禁)

url := fmt.Sprintf("https://webcast.amemv/webcast/ranklist/room/%v/contributor/?sec_anchor_id=%v&room_id=%v&rank_type=30&webcast_sdk_version=1560&webcast_language=zh&webcast_locale=zh_CN&os_api=22&device_type=MI9&ssmix=a&manifest_version_code=110501&dpi=240&uuid=863254598923521&app_name=aweme&version_name=11.5.0&ts=%v&cpu_support64=false&app_type=normal&ac=wifi&host_abi=armeabi-v7a&update_version_code=11509900&channel=gdt_growth14_big_yybwz&_rticket=%v&device_platform=android&iid=%v&version_code=110500&mac_address=00:F4:8D:7F:EB:ED&cdid=5ab13fd4-8b6b-4b4f-8048-d4ccc69e3730&openudid=42934351239ad324&device_id=%v&resolution=720*1280&os_version=5.1.1&language=zh&device_brand=Android&aid=1128&mcc_mnc=46007",
	roomId, userId, roomId, strTs, strRticket, val.IID, val.DevId)

二、go获取数据

1.伪造请求参数

ts := int(time.Now().Unix())
rticket := int(time.Now().Unix() * 1000)

2.拼装url

url := fmt.Sprintf("https://webcast.amemv/webcast/ranklist/room/%v/contributor/?sec_anchor_id=%v&room_id=%v&rank_type=30&webcast_sdk_version=1560&webcast_language=zh&webcast_locale=zh_CN&os_api=22&device_type=MI9&ssmix=a&manifest_version_code=110501&dpi=240&uuid=863254598923521&app_name=aweme&version_name=11.5.0&ts=%v&cpu_support64=false&app_type=normal&ac=wifi&host_abi=armeabi-v7a&update_version_code=11509900&channel=gdt_growth14_big_yybwz&_rticket=%v&device_platform=android&iid=%v&version_code=110500&mac_address=00:F4:8D:7F:EB:ED&cdid=5ab13fd4-8b6b-4b4f-8048-d4ccc69e3730&openudid=42934351239ad324&device_id=%v&resolution=720*1280&os_version=5.1.1&language=zh&device_brand=Android&aid=1128&mcc_mnc=46007",
	roomId, userId, roomId, strTs, strRticket, val.IID, val.DevId)

3.拼装请求头

headers := map[string]string{
		"Host":            "webcast.amemv",
		"Connection":      "keep-alive",
		"Cookie":          cookie,
		"X-SS-REQ-TICKET": strRticket,
		"sdk-version":     "1",
		"User-Agent":      agent,
		"X-Khronos":       strTs,
		"X-Gorgon":        gorgon,
		"X-Pods":          "",
	}

4.发送请求

data, err := utils.HttpGet(global.IP, url, headers)
	if err != nil {
		log.Printf("err fail %v", err)
		return datas, err
	}

5.分析并获取数据

for _, val := range foller.Data.Ranks {
		if val.User.Gender == 1 || val.User.Gender == 2 {
			gender := "男"
			if val.User.Gender == 2{
				gender = "未知"
			}
			user := LiveUser{
				Id:         fmt.Sprintf("%v", val.User.ID),
				SecUid:     val.User.SecUID,
				Nickname:   val.User.Nickname,
				Gender:     gender,
				Level:      fmt.Sprintf("%v", val.User.PayGrade.Level),
				Display_id: val.User.DisplayID,
				Scor:       fmt.Sprintf("%v", val.Score),
			}
			datas = append(datas, &user)
		}
	}

三、python自动化获取抖音iid

1.python使用pyautogui包
pyautogui是一款自动化点击的包
主要是根据软件在屏幕上的位置实现自动化点击操作来打开抖音,配合fiddle抓包抓取请求包含iid的url并保存到本地文件夹。最后使用分析txt文件的url获取到iid存到redis。

import socket
from functools import reduce
import redis
import pyautogui
import time, json
import os


# POST https://register.xmpush.global.xiaomi/pass/v2/register HTTP/1.1
# User-Agent: Dalvik/2.1.0 (Linux; U; Android 5.1.1; MI 9 Build/NMF26X)
# Host: register.xmpush.global.xiaomi
# Connection: Keep-Alive
# Accept-Encoding: gzip
# Content-Type: application/x-www-form-urlencoded
# Content-Length: 315
#
# android_id=5ba6756546df6c8b&appid=2882303761517509924&apptoken=5571750917924&appversion=110501&board=Xiaomi&brand=Android&devid=a-152B2B16C8CDA2504BB529B29AB6499694A76BEB&devid1=a-A21A7A725CE0BC1F69F718430AE1620CE15C5CCA&model=MI+9&os=5.1.1-500210628&packagename=com.ss.android.ugc.aweme&sdkversion=30619&space_id=0
#

# 窗口大小 模拟器位置 x=522 y=140 大小 800*670
# 模拟器位置 486 292  大小1009*578

def setup():
    print("开机中")
    time.sleep(5)
    # 启动新的模拟器
    pyautogui.click(1215, 287)
    time.sleep(30)

    # 输入密码
    pyautogui.click(974, 800)
    pyautogui.scroll(-500)
    time.sleep(1)
    pyautogui.press('shift')
    time.sleep(1)
    pyautogui.typewrite('q123')
    pyautogui.press('enter')
    print("开机成功")

# 1.获取本机路由ip
# print(GetLocalIPByPrefix('192.168'))
def GetLocalIPByPrefix(prefix):
    r""" 多网卡情况下,根据前缀获取IP(Windows 下适用) """
    localIP = ''
    for ip in socket.gethostbyname_ex(socket.gethostname())[2]:
        if ip.startswith(prefix):
            localIP = ip

    return localIP

# 2.虚拟点击下载安卓模拟器
def setupYeshen():
    # # 2.1点击模拟器
    pyautogui.click(330, 740,clicks=2)
    time.sleep(5)
    #
    # # 删除原本的模拟器
    pyautogui.click(1262, 287, clicks=1)
    pyautogui.click(1010, 494, clicks=1)

    # # 克隆模拟器
    pyautogui.click(1322,287, clicks=1)
    pyautogui.click(1280, 320, clicks=1)
    time.sleep(3)

    #启动输入密码
    setup()

   # #安装xpsot
    print("安装xposed中")
    time.sleep(3)
    pyautogui.click(1330, 486, clicks=2)
    time.sleep(3)

    pyautogui.click(1162, 789, clicks=2)
    time.sleep(3)
    pyautogui.click(625, 640)
    time.sleep(3)
    pyautogui.click(785, 583)

    time.sleep(5)
    print("安装xposed成功")

    # # 关闭模拟
    pyautogui.click(1220, 59)
    time.sleep(3)
    pyautogui.click(1049, 588)
    time.sleep(1)
    print("关闭模拟器成功")
    time.sleep(5)
    # 启动新的模拟器
    setup()

    # 打开fiddle
    print("打开fiddle")
    pyautogui.click(334, 852, clicks=2)
    time.sleep(5)

    # 打开抖音
    print("打开抖音")
    pyautogui.click(760, 596)
    time.sleep(20)
    pyautogui.click(965, 669)
    time.sleep(3)
    pyautogui.scroll(-500)
    time.sleep(3)
    pyautogui.scroll(-500)
    time.sleep(3)
    pyautogui.scroll(-1000)
    print("开始抓取并分析请求")
    time.sleep(5)

    print("抓取成功,开始关闭模拟器")
    # 关闭模拟
    pyautogui.click(1217, 59)
    time.sleep(3)
    pyautogui.click(1058, 588)
    time.sleep(3)
    print("模拟器关闭成功")

def Close():
    # pyautogui.mouseUp(button='right', x=236, y=1058)
    pyautogui.click(button='right', x=294, y=1059)
    time.sleep(2)
    pyautogui.click(206,1002)

def sent_redis_id():
    print("我开始迁移id到redis")
    r = redis.Redis(host='***.***.***', port=5930, decode_responses=True)  # host是redis主机,需要redis服务端和客户端都启动 redis默认端口是6379
    list = march()

    for i in list:
        dict = {
            "devId":i.get("devce_id"),
            "iId":i.get("iid"),
        }
        p = json.dumps(dict)
        print(p)
        a = r.lpush("list3", p)
        print(a)
    if os.path.exists("E://response.txt"):
        os.remove("E://response.txt")

2.fiddle抓包并保存到本地代码

  if(oSession.host == 'aweme.snssdk' && oSession.url.Contains("iid") && oSession.url.Contains("device_id")){ 
            var filename = "E:/response.txt"; 

            //var logContent = oSession.GetResponseBodyAsString();    //oSession.GetResponseBodyAsString()获取相应内容字符串
            var sw : System.IO.StreamWriter;  
            if (System.IO.File.Exists(filename)){  //是否有该文件夹  
                sw = System.IO.File.AppendText(filename);   //有添加
                sw.Write(oSession.url);
                sw.Write("\n");
            }  
            else{  
                sw = System.IO.File.CreateText(filename);  //没有创建
                sw.Write(oSession.url);
                sw.Write("\n");
            }  
            sw.Close();  
            sw.Dispose();  

        }


四、python服务端代码部署签名算法

签名算法已经写好,通过flask进行服务端部署
安装python环境后直接执行即可

更多推荐

某音init_gorgon(),x-gorgon分析和数据的获取(3)

本文发布于:2023-03-29 07:18:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/b1d28250e3081763bf6bf6d39f38c019.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数据   某音   init_gorgon   gorgon

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!