python某音app商城商品详情(2024-11-06)
python 某音app商城商品详情
·
一、抓包
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请求商品详情成功)
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)