一、抓包


1、环境搭建


某音app版本31.7.0
已安装Magisk+lsposed的手机(一般是小米手机)
Charles抓包工具(v4.6.5)
Postem(手机端转发端口)
Magisk+lsposed(root环境)

2、抓包原理


charles+Magisk+lsposed+Postem


3、hook源码

package utils;

import android.app.AndroidAppHelper;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.util.Log;

import android.os.Bundle;
import android.util.Base64;
import android.util.Log;
import android.widget.Toast;

import org.json.JSONObject;

import java.io.InputStream;
import java.lang.reflect.Field;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;

import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XC_MethodReplacement;
import de.robv.android.xposed.XposedBridge;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;


import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
public class MainHook implements IXposedHookLoadPackage {

    @Override
    public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {
        Log.i("byc","===================dy-start1=========================");
        //XposedBridge.log("===================dy-start1==========================");
        // 判断当前启动的目标程序是否是要hook的应用程序
        // 通杀dy|dy极速版|短视频等  author by byc6352 or metabycf
        if (loadPackageParam.packageName.contains("com.ss.android.ugc.aweme")) {
            XposedBridge.log("=======dyCapture=====================");
            Class CronetClient = XposedHelpers.findClass("org.chromium.CronetClient", loadPackageParam.classLoader);
            XposedBridge.hookAllMethods(CronetClient, "tryCreateCronetEngine",
                    new XC_MethodReplacement() {
                        @Override
                        protected Object replaceHookedMethod(XC_MethodHook.MethodHookParam methodHookParam) throws Throwable {
                            return null;
                        }
                    });
        }

    }


}

4、抓包示例(成功抓到数据):

图1(Charles抓包商品详情)

二、Scheme跳转链接


1、商品详情的跳转链接是:

snssdk1128://goods/seeding/?promotion_id=3712628099427467440

可以从安卓app或浏览器通过scheme跳转直接打开指定的商品详情页

2、网页跳转商品页源码

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>应用内跳转</title>
<link rel="stylesheet" href="static/css/css.min.css">
<script src="static/js/jquery.js"></script>
<meta http-equiv="x-dns-prefetch-control" content="on">
<meta name="viewport" content="width=device-width,initial-scale=1">
<style>
body{max-width:900px;margin:0 auto}
.weixin-tip {display: none; position: fixed; left:0; top:0; bottom:0; background: rgba(0,0,0,0.8); filter:alpha(opacity=80);  height: 100%; width: 100%; z-index: 100;}
.weixin-tip p{text-align: center; margin-top: 20%; padding:0 5%;}
.weixin-tip img{width:100%;}
</style>
</head>
<body>
<div class="h5ui-msg h5ui-msg_error">
    <div class="h5ui-msg_content">
		<div class="tubiao"><img src="app.png" /></div>		
		<h1 style="color:red;">应用内跳转</h1>
		<div class="tab-content">
			<p>更新于:2024-11-05 12:00:00(author by byc6352 or metabycf)</p>
		</div>
		<div class="erweima">
		<a href="snssdk1128://goods/seeding/?promotion_id=3712628099427467440" class="h5ui-btn h5ui-btn_primary">抖音跳转</a>
		
    </div>
</div>
	<div class="weixin-tip">
		<p>
			<img src="static/picture/weixin.png" alt="微信打开">
		</p>
	</div>
	<script type="text/javascript">
        $(window).on("load",function(){
	        var winHeight = $(window).height();
			function is_weixin() {
			    var ua = navigator.userAgent.toLowerCase();
			    if (ua.match(/MicroMessenger/i) == "micromessenger") {
			        return true;
				} else if (ua.match(/QQ/i) == "qq") {	
					return true;
			    } else {
			        return false;
			    }
			}
			var isWeixin = is_weixin();
			if(isWeixin){
				$(".weixin-tip").css("height",winHeight);
	            $(".weixin-tip").show();
			}
        })
	</script>
</body>
</html> 

三、python 请求商品接口源码

# -*- coding: utf-8 -*-
"""
-------------------------------------------------
    Author: byc6352
    File:product.py
    Time: 2024/11/06 08:03
    Technical Support:byc6352 or metabycf or 39848872 or t:byc01 or potato:metabyc
-------------------------------------------------
    Change : 2024/11/06 08:03
-------------------------------------------------
    Desc:
"""
import json
import requests
import function

def xg_sign(req_url, req_headers):
    api = "http://xxxx.com:10001/api/dy/encrypt"
    ##生成抖音六神参数 contact :byc6352 or metabycf
    ##X-Ladon,X-Khronos,X-Argus,X-Gorgon,X-Helios,X-Medusa
    header_list = []
    for k, v in req_headers.items():
        header_list.append(k)
        header_list.append(v)
    data = {
        "url": req_url,
        "headerList": json.dumps(header_list)
    }
    # print(data)
    res = requests.post(api, data=data)
    result = res.json()
    return result


def get_product(product_id):
    try:
        headers = {
            "method": "POST",
            "path": "/ecom/product/detail/stream/?klink_egdi=AAIeERE3u6AxDOC7htGjlnWKCKIlejk7oZso1wd8qpFlYv3urbLupx-M&iid=3710169740217968&device_id=3261614919800426&ac=wifi&channel=xiaomi_1128_64&aid=1128&app_name=aweme&version_code=310700&version_name=31.7.0&device_platform=android&os=android&ssmix=a&device_type=MI+8+Lite&device_brand=Xiaomi&language=zh&os_api=29&os_version=10&manifest_version_code=310701&resolution=1080*2068&dpi=440&update_version_code=31709900&_rticket=1730812802487&first_launch_timestamp=1729320560&last_deeplink_update_version_code=31709900&cpu_support64=true&host_abi=arm64-v8a&is_guest_mode=0&app_type=normal&minor_status=0&appTheme=light&is_preinstall=0&need_personal_recommend=1&is_android_pad=0&is_android_fold=0&ts=1730812804&cdid=415d513f-f91d-4a6a-ae09-5d8a1b9760ed",
            "authority": "ecom5-normal-lq.ecombdapi.com",
            "scheme": "https",
            "x-ss-stub": "EBA4291BD798853C56757E24E51A45E1",
            "accept-encoding": "gzip",
            "x-tt-dt": "AAA35EUO536D47D44CV3PCY7HG6A37XC3Q2Z2NTL6MQNO5WOOMHSKP5UQAS2IRUW52R5VQG3CNQULNIITVCUH6OR4FSOJSU3TK72MKMMR7TH63IKNJMGUQLBNYGF77OARDFPPPDFMLP6WU7GCJHNDNI",
            "activity_now_client": "1730812804586",
            "x-bd-client-key": "bd25b9d98c687cfd61b80668bc71972f5b437e89b6c69db9496166a8463014b084609486196db2930052c33d23c14e2f7ff21463cb983c77898fe100b34a3cd8",
            "x-bd-kmsv": "1",
            "sdk-version": "2",
            "x-tt-passport-mfa-token": "CjZ+xGx9aFWdpxzuRWBIgyeiietrATgxNAMQWumtEtX6pRo1S9Tyz5reTkUsKIFlu0YrGHkulpUaSgo8widUXGmoflSx9/vl0z61chwLMkPD6HS/9ASMKCHWJDCs76hdzVCVy16OTr0jexLXZipL6n8qDTdDExfxEPvH4A0Y9rHRbCACIgEDoorqYw==",
            "x-tt-token": "0073e3916318365a9cc074e262217c9b8f027c4fd96156aa8334164b00b9f02f1a8159288668894e13f2012f9cf6a8862b64da1f03085b650084da3a4252f9a423597ef52b63d573119e4eb9aa0c53f2a4fb3f9c5acf4d784730a34cce89bb02dd319-1.0.1",
            "x-tt-token-supplement": "03bebfbef711cb858ecf76506954cd128bb1dcf9ae2509899f37682c4c066729833fdb9836af09394c98a422b7761571d88fa2f767dc3c68cae4c23165897bcd8b9",
            "passport-sdk-version": "203266",
            "x-vc-bdturing-sdk-version": "3.7.3.cn",
            "user-agent": "com.ss.android.ugc.aweme/310701 (Linux; U; Android 10; zh_CN; MI 8 Lite; Build/QKQ1.190910.002;tt-ok/3.12.13.4-tiktok)",
            "x-ladon": "ZyobgA==",
            "x-khronos": "1730812800",
            "x-argus": "gBsqZw==",
            "x-gorgon": "8404408600011e58573699a1044a9f40e75e639ad18b11dafb91",
            "x-helios": "42KyFfoiT2YA3qf69oWnSB1WHxKwKJt3biDt7WY4GBIr92PO",
            "x-medusa": "hBsqZ5J0qhJmnphROPCuraLQaY/CdQAB3jdxlENBAeksGj1mTmq/1ynjlut0xVAFOFOF1g5PuT/H9fW9UkbaM6HjDwo2oYgQR+rrohqV5INK/VmQSKHrroZFZM+CQrPskb/JPeXzrkvjUYiiEnRCJiFjSVInGDPKN13qryrAaiT9iXW5AifaSRoSxvk5AFbq08S58U6BIXSzj0yDY+RQqWRlRMyca01itiqNlO7XQlYfc8dpoxrUZIns/RsBry78UUkmqov99qpu2vqF2HDaMQNSZtjb/IoCBKmjo0i/IxMjL26Zpzjn0NRgS0PjHkdKaBhPc08CO0+rIn4G/OONpmjZagXhcKAOuD6ZcKHCUCrFnoiJSoab9xoZOwp+69NQvBd7I5gKxm5cOpyn5YXAAOZ7jJBfXzZEKy8bcq0uD8tlehaD+9G4rJDrpdFo1FL+43yD/eJXsnSsguAoDYNXq9PTdBfc1y5vUfL3tQzZfJQ8/KSfKEm7eBuxP5gDe8EuRb0BYzDF14+IJD4NvC3FVHRRoToqQFUfP1ollCxDpROiWME06dkqzUVD3jefZkNgaCr0AqE0/aQHQSOih2EMkvXqAHfTrxkZNJoCBMMXemPa0JFkVJgSguPhEZ0YpDOK9YSbPY+gKEuX02umX7X7V7cC//i3Av746RM=",
            "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
            "content-length": "4588",
            "cookie": "passport_csrf_token=239a8666cc640ebacd015fc77c58f4bc; passport_csrf_token_default=239a8666cc640ebacd015fc77c58f4bc; d_ticket=17923e6324133d68e54c2b76f5a6c56f6cbf1; passport_mfa_token=CjZ%2BxGx9aFWdpxzuRWBIgyeiietrATgxNAMQWumtEtX6pRo1S9Tyz5reTkUsKIFlu0YrGHkulpUaSgo8widUXGmoflSx9%2Fvl0z61chwLMkPD6HS%2F9ASMKCHWJDCs76hdzVCVy16OTr0jexLXZipL6n8qDTdDExfxEPvH4A0Y9rHRbCACIgEDoorqYw%3D%3D; multi_sids=1205541730521768%3A73e3916318365a9cc074e262217c9b8f; odin_tt=c8d058700a61cccc7339db9142afbf174c299a690a4bd44935ecdc1d763197612b70e2268c243a95f3bc5bec7bb254d22cebedc9a1141e6bc3a13f574d4f5e5f074007d7490664da0d51521023293464; passport_assist_user=CkF6XZdQFN8yaWk3OZmtgMmeWl725AfiLTuuHDqqSIUi5f3_PI483Lt0QoauL8loYyqnjwDBhSpbLoJpI8GSHJoAkBpKCjx3DfP8S1Bua9QnSbnwpnSzE1h_82IPk6wap_ob6ThdNQHIW2-CnYxVXkoIUcN80ZFnQZm2oC8Kx9Wekj0Q1MfgDRiJr9ZUIAEiAQN2Mh7a; n_mh=HljqylxpJTsSBfXF9ZwYpjNZ8KoP4zyz5DkqE7JYTlk; sid_guard=73e3916318365a9cc074e262217c9b8f%7C1730703817%7C5184000%7CFri%2C+03-Jan-2025+07%3A03%3A37+GMT; uid_tt=330159761faa41",
        }

        url = "https://ecom5-normal-lq.ecombdapi.com/ecom/product/detail/stream/?klink_egdi=AAIeERE3u6AxDOC7htGjlnWKCKIlejk7oZso1wd8qpFlYv3urbLupx-M&iid=3710169740217968&device_id=3261614919800426&ac=wifi&channel=xiaomi_1128_64&aid=1128&app_name=aweme&version_code=310700&version_name=31.7.0&device_platform=android&os=android&ssmix=a&device_type=MI+8+Lite&device_brand=Xiaomi&language=zh&os_api=29&os_version=10&manifest_version_code=310701&resolution=1080*2068&dpi=440&update_version_code=31709900&_rticket=1730812802487&first_launch_timestamp=1729320560&last_deeplink_update_version_code=31709900&cpu_support64=true&host_abi=arm64-v8a&is_guest_mode=0&app_type=normal&minor_status=0&appTheme=light&is_preinstall=0&need_personal_recommend=1&is_android_pad=0&is_android_fold=0&ts=1730812804&cdid=415d513f-f91d-4a6a-ae09-5d8a1b9760ed"
        data = 'user_id=1205541730521768&sec_user_id=MS4wLjABAAAASaiAOg4W7W1Blc4IO-XO8wFezU6PySsaqO9Qq2nBJlYmLnlra-HRA0HUHPx5NAS4&author_id=&author_open_id=&sec_author_id=&promotion_ids=3712628099427467440&item_id=&enter_from=open_url&meta_param=%7B%22entrance_info%22%3A%22%7B%5C%22carrier_source%5C%22%3A%5C%22open_url%5C%22%2C%5C%22source_method%5C%22%3A%5C%22open_url%5C%22%2C%5C%22ecom_group_type%5C%22%3A%5C%22%5C%22%7D%22%2C%22market_address%22%3A%22%7B%5C%22address_detail%5C%22%3A%5C%22%7B%5C%5C%5C%22address_list%5C%5C%5C%22%3A%5B%5D%2C%5C%5C%5C%22error_code%5C%5C%5C%22%3A1%7D%5C%22%7D%22%7D&width=1080&height=1080&use_new_price=1&cps_track=&gps_on=1&product_id=&creative_id=&promotion_id=&bff_type=1&ui_params=%7B%22bff_snapshot_switch%22%3Afalse%2C%22bolt_param%22%3A%22%7B%7D%22%2C%22carrier_source%22%3A%22open_url%22%2C%22channel_id%22%3A%22%22%2C%22channel_type%22%3A0%2C%22client_abs%22%3A%22%7B%5C%22iesec_new_goods_detail_edition%5C%22%3A6%2C%5C%22iesec_detail_head_search_plan%5C%22%3A2%2C%5C%22iesec_goods_detail_image_tab_optimize%5C%22%3A0%2C%5C%22iesec_goods_detail_optimize%5C%22%3A7%2C%5C%22need_adapt_addr%5C%22%3A1%2C%5C%22iesec_saas_balance_exchange%5C%22%3A0%2C%5C%22iesec_header_style_ab%5C%22%3A1%2C%5C%22iesec_header_category_b%5C%22%3A%5C%22%7B%5C%5C%5C%22category%5C%5C%5C%22%3A%5B%5B%5D%2C%5B21028%2C21235%2C20152%2C21503%2C21509%2C21515%2C20853%2C20873%2C20867%2C20739%2C20716%2C20743%2C20741%5D%2C%5B26137%2C26175%2C26168%2C26135%2C26276%2C26954%2C26277%2C26806%2C24647%2C22268%2C21514%2C33283%2C25725%2C22507%2C22505%2C22502%2C22503%2C22497%2C20537%2C24572%2C25783%2C25779%2C25378%2C25382%5D%2C%5B31174%5D%5D%7D%5C%22%2C%5C%22iesec_header_category_scene%5C%22%3A%5C%22%7B%5C%5C%5C%22category%5C%5C%5C%22%3A%5B%5B20009%2C20005%2C20010%2C20006%5D%2C%5B%5D%2C%5B%5D%2C%5B%5D%5D%2C%5C%5C%5C%22scene%5C%5C%5C%22%3A%5B%5C%5C%5C%221031%5C%5C%5C%22%2C%5C%5C%5C%221004%5C%5C%5C%22%2C%5C%5C%5C%221003%5C%5C%5C%22%2C%5C%5C%5C%221094%5C%5C%5C%22%5D%7D%5C%22%2C%5C%22iesec_ad_brand_popup%5C%22%3A2%2C%5C%22iesec_pdp_replay_ui_opt%5C%22%3A0%2C%5C%22iesec_aweme_tab_mall%5C%22%3A1%2C%5C%22iesec_pdp_slice_gecko%5C%22%3A%5C%221%5C%22%2C%5C%22iesec_saas_live_replay%5C%22%3A0%2C%5C%22iesec_saas_shop_recommend%5C%22%3A0%2C%5C%22iesec_pdp_bff_optimize%5C%22%3A1%2C%5C%22iesec_kol_video_evaluation_detail%5C%22%3A1%2C%5C%22iesec_pdp_find_same_opt%5C%22%3A2%2C%5C%22iesec_ecom_pdp_video_opt%5C%22%3A1%2C%5C%22iesec_ecom_live_list_ab%5C%22%3A0%2C%5C%22iesec_auto_coupon_opt_ab%5C%22%3A1%2C%5C%22iesec_chunk_not_include_service_panel%5C%22%3Afalse%2C%5C%22detail_first_render_upload_opt%5C%22%3Afalse%2C%5C%22detail_first_render_download_opt%5C%22%3Afalse%2C%5C%22iesec_pdp_top_nav_slice%5C%22%3A1%2C%5C%22iesec_pdp_bottom_nav_slice%5C%22%3A0%2C%5C%22iesec_pdp_new_style_top%5C%22%3A1%2C%5C%22iesec_pdp_new_style_bottom%5C%22%3A1%2C%5C%22iesec_ecom_pdp_update_exp%5C%22%3A0%2C%5C%22iesec_slice_fit_width%5C%22%3A%5C%22true%5C%22%2C%5C%22iesec_pdp_gallery_buy%5C%22%3A0%2C%5C%22pdp_drill_client_exp%5C%22%3Afalse%2C%5C%22iesec_saas_shop_comment%5C%22%3A%5C%22%5C%22%2C%5C%22iesec_saas_pdp_search%5C%22%3A%5C%22%5C%22%2C%5C%22debug_flag%5C%22%3A%5C%22%5C%22%7D%22%2C%22ecom_entrance_form%22%3A%22open_url%22%2C%22enter_method%22%3A%22click_open_url%22%2C%22entrance_info%22%3A%22%7B%5C%22carrier_source%5C%22%3A%5C%22open_url%5C%22%2C%5C%22source_method%5C%22%3A%5C%22open_url%5C%22%2C%5C%22ecom_group_type%5C%22%3A%5C%22%5C%22%7D%22%2C%22font_scale%22%3A1.0%2C%22from_live%22%3Afalse%2C%22from_video%22%3Afalse%2C%22full_mode%22%3Atrue%2C%22iesec_new_goods_detail_edition%22%3A6%2C%22is_auth%22%3A%221%22%2C%22is_luban%22%3Afalse%2C%22is_recommend_enable%22%3Atrue%2C%22is_short_screen%22%3Atrue%2C%22window_reposition%22%3Afalse%2C%22large_font_scale%22%3Afalse%2C%22native_control_flags%22%3A%22%7B%5C%22share_control_times%5C%22%3A%5C%220%5C%22%7D%22%2C%22height_percent%22%3A0%2C%22pdp_session_id%22%3A%22055e3297-ac29-43a2-b16d-b7fcdb648209%22%2C%22product_pre_info%22%3A%22null%22%2C%22promotion_id%22%3A%223712628099427467440%22%2C%22request_additions%22%3A%22%7B%5C%22cps_track%5C%22%3A%5C%22%5C%22%7D%22%2C%22show_sku_panel%22%3A0%2C%22sku_switch%22%3A%220%22%2C%22source_method%22%3A%22open_url%22%2C%22source_page%22%3A%22open_url%22%2C%22useful_screen_width%22%3A392%7D&user_avatar_shrink=132_132&goods_header_shrink=1080_1080&goods_comment_shrink=464_464&shop_avatar_shrink=101_101&common_large_shrink=3240_3240&ecom_scene_id=&goods_content_shrink=1080_-1&cps_track=&same_product_scene=0&is_preload_req=false&slice_sdk_version=2.13&channel_id=&channel_type=0&full_resp=false'
        data = data.replace('3712628099427467440', product_id)
        res = xg_sign(url, headers)
        headers.update(res)
        print(res)
        res = requests.post(url, headers=headers, data=data.encode())
        print(res.status_code)
        print(res.headers)
        print(res.text)
        function.savetofile('product_detail.txt', res.text)
        return res.status_code,res.text
    except Exception as e:
        print('do_GET:error:', e)
        print(e.__traceback__.tb_frame.f_globals["__file__"])  # 发生异常所在的文件
        print(e.__traceback__.tb_lineno)  # 发生异常所在的行数
        return 500,  '{"code":500,"msg":"系统错误"}'

if __name__ == '__main__':
    get_product('3712628099427467440')

2、python请求商品详情成功:


图2(python请求商品详情成功)

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐