接上篇。

店铺全量商品接口测试 - 9.x版本,需要x-sign和x-miniwua,8.x 版本该接口不可用:

# -*- coding: utf-8 -*-import time
from typing import Dict
import requestsimport json
from urllib.parse import quotedef timer(function):def wrapper(*args, **kwargs):time_start = time.time()res = function(*args, **kwargs)cost_time = time.time() - time_startprint("【%s】运行时间:【%s】秒" % (function.__name__, cost_time))return resreturn wrapperdef dict_encode(param_dict):return json.dumps(param_dict, separators=(',', ':'))class TBBaseClass():xsign_url = "xxxxxx"    # 测试链接,如需测试,请联系QQ获取。+Q: 251273504serverg = "tb910"servera = "tbxsign"def random_lat_lng(self):return {"lng": "0", "lat": "0"}def random_device_info(self):device_info = {"user-agent": 'Dalvik/2.1.0 (Linux; U; Android 8.1.0; Xiaomi 8 Build/OPM1.171019.011)',# "deviceId": 'xxxx',"appKey": "21646297",# "utdid": 'xxxxxxx',"ttid": "1628000524142@taobao_android_9.1.0",}return device_infodef get_xsign(self, params):params["group"] = self.servergparams["action"] = self.serveratry:response = requests.post(self.xsign_url,json=params,verify=False,timeout=3)res = response.json()result = res["data"]if "x-sign" not in result.keys():print({'error': f'调用x-sign接口失败., result: {result}'})return Nonereturn resultexcept Exception as e:import tracebacktraceback.print_exc()print({'error': f'调用x-sign接口异常. {e}'})return None@staticmethoddef get_header(params, x_sign_data):headers = {"x-features": params.get("x-features"),"x-pv": "6.3","x-sgext": "923","x-location": ",".join([params.get("lng"), params.get("lat")]),"user-agent": params.get("user-agent"),  # quote(params.get("user-agent"), safe="+"),"x-ttid": params.get("ttid"),"x-appkey": params.get("appKey"),"x-devid": params.get("deviceId"),"x-utdid": params.get("utdid"),"x-t": params.get("timestamp")[:10],"x-uid": params.get("uid"),"x-sid": params.get("sid"),"x-umt": quote(x_sign_data.get("x-umt"), safe=''),"x-mini-wua": quote(x_sign_data.get("x-mini-wua"), safe=''),"x-sign": quote(x_sign_data.get("x-sign"), safe=''),'x-bx-version': '6.4.11',# 'f-refer': 'mtop',# 'x-app-ver': '9.1.0','user-agent': 'MTOPSDK%2F3.1.1.7+%28Android%3B8.1.0%3BXiaoMi%3BXiaomi+8%29','Host': 'guide-acs.m.taobao.com',}return headersdef get_x_sign_data(self, params):sign_params = {"deviceId": params.get("deviceId"),"appKey": params.get("appKey"),"extdata": params.get("extdata"),"utdid": params.get("utdid"),"x-features": params.get("x-features"),"ttid": params.get("ttid"),"v": params.get("v"),"sid": params.get("sid"),"t": params.get("timestamp")[:10],"api": params.get("api"),"data": params.get("data"),"uid": params.get("uid"),"lng": params.get("lng"),"lat": params.get("lat"),"pageName": params.get("pageName"),"pageId": params.get("pageId"),}x_sign_data = self.get_xsign(sign_params)return x_sign_data@staticmethoddef prepare_params(features, v, api, page_name, page_id, data, device_info, lat_lng_info, user_cookie) -> Dict:timestamp = str(int(time.time() * 1000000))sid = user_cookie.get("cookie2", "")uid = user_cookie.get("unb", "")params = {"x-features": features,"v": v,"api": api,"pageName": page_name,"pageId": page_id,"deviceId": device_info.get("deviceId"),"appKey": device_info.get("appKey"),"extdata": device_info.get("extdata"),"utdid": device_info.get("utdid"),"ttid": device_info.get("ttid"),"lng": lat_lng_info.get("lng"),"lat": lat_lng_info.get("lat"),"sid": sid,"uid": uid,"data": data,"timestamp": timestamp,}return paramsdef get_shop_all_items_data(self, seller_id, shop_id, page):data = dict_encode({'LBS': '{"SG_TMCS_1H_DS":"xxxxxxxxxxx"}','_inNestedEmbed': 'true','_page_home_isweex_': 'true','_page_inside_embed_': 'true','_useless1': '1','_wx_f_': '1','_wx_shop_render_activity': 'true','active_bd': '1','features': '{}','info': 'wifi','isFlagship': '1','isMiniApp': 'false','isWeexShop': 'true','item_id': '627624856025','m': 'shopitemsearch','miniAppCategoryUrl': '','miniAppDetailUrl': '','n': '10','network': 'wifi','new_shopstar': 'true','page': f'{page}','pre_item_id': '627624856025','searchFramework': 'true','search_wap_mall': 'false','sellerId': f'{seller_id}','setting_on': 'imgBanners,userdoc,tbcode,pricerange,localshop,smartTips,firstCat,dropbox,realsale,insertTexts,tabs','shopFetchTimeout': '200','shopFrameRenderTimestamp': '1621927466956','shopId': f'{shop_id}',xxxxxxxxx # 参数太长了,省略,抓包即可,不会抓包的参考上一篇介绍。})return datadef get_shop_all_items(self, seller_id, shop_id, page):features = "27"api = "mtop.taobao.wsearch.appsearch"v = "1.0"page_name = "com.taobao.android.shop.activity.ShopRenderActivity"page_id = "http%3A%2F%2Fh5.m.taobao.com%2Fweex%2Fviewpage.htm"api_url = f"http://guide-acs.m.taobao.com/gw/{api}/{v}/"lat_lng_info = self.random_lat_lng()device_info = self.random_device_info()user_cookie = {}data = self.get_shop_all_items_data(seller_id, shop_id, page)params = self.prepare_params(features, v, api, page_name, page_id, data, device_info, lat_lng_info, user_cookie)x_sign_data = self.get_x_sign_data(params)params["user-agent"] = device_info["user-agent"]headers = self.get_header(params, x_sign_data)return api_url, data, headers, user_cookiedef test_shop_all_items(self, seller_id, shop_id, page):api_url, data, headers, cookie = self.get_shop_all_items(seller_id, shop_id, page)params = {"data": data}try:response = requests.get(api_url, params=params, headers=headers, cookies=cookie, timeout=3, verify=False)except:return Nonereturn response@timer
def test_shop_items(seller_id, shop_id):obj = TBBaseClass()totalPage = Nonefor page in range(1, 100):if totalPage is not None and page > totalPage:breakwhile True:res = obj.test_shop_all_items(seller_id, shop_id, page)if res.status_code == 200:totalPage = int(res.json()["data"]["totalPage"])t_page = int(res.json()["data"]["page"])totalResults = int(res.json()["data"]["totalResults"])item_ids = [i["item_id"] for i in res.json()["data"]["itemsArray"]]print(f"店铺商品总数:{totalResults}, 总页数:{totalPage}, 当前页数:{t_page}, item_ids:{item_ids}",)breakelse:continue
seller_id = "3948263976"
shop_id = "251740197"
test_shop_items(seller_id, shop_id)

测试结果如下:

某宝x-sign签名分析-店铺全量商品接口相关推荐

  1. 京东店铺的所有商品API接口-(item_search_shop-获得店铺的所有商品接口),京东API接口

    一.京东店铺的所有商品API接口-(item_search_shop-获得店铺的所有商品接口),京东API接口代码如下: 1.公共参数 名称 类型 必须 描述 key String 是 调用key(必 ...

  2. python爬虫爬商品库存_利用Python爬虫爬取指定天猫店铺全店商品信息

    本编博客是关于爬取天猫店铺中指定店铺的所有商品基础信息的爬虫,爬虫运行只需要输入相应店铺的域名名称即可,信息将以csv表格的形式保存,可以单店爬取也可以增加一个循环进行同时爬取. 源码展示 首先还是完 ...

  3. 利用Python爬虫爬取指定天猫店铺全店商品信息

    本编博客是关于爬取天猫店铺中指定店铺的所有商品基础信息的爬虫,爬虫运行只需要输入相应店铺的域名名称即可,信息将以csv表格的形式保存,可以单店爬取也可以增加一个循环进行同时爬取. 源码展示 首先还是完 ...

  4. Java—通过sign签名认证实现安全的开放接口API

    关注微信公众号:CodingTechWork,一起学习进步. 文章目录 引言 API接口 timestamp保证唯一性 shell生成timestamp java生成timestamp模板 sign签 ...

  5. 淘宝/天猫API:获得店铺的所有商品

    item_search_shop-获得店铺的所有商品[查看演示] onebound.taobao.item_search_shop 请求参数:seller_nick=kowa2010&star ...

  6. java 增量编译_java增量/全量编译接口应用

    JavaCompile Java compile是一个自动增量/全量编译java的api接口应用. 包含以下特性: 全量编译 增量编译 svnkit接口(svn操作web接口) 全流程使用案例 Jav ...

  7. 某宝x-sign/x-miniwua签名分析-主搜接口

    接上篇. 仔细查看后,发现其实主搜接口和店铺全部商品接口除了参数不同以外是同一个api,抓包即可获取相应接口的参数,同样也是需要 9.x 版本的x-sign和x-miniwua. 关键词搜索接口测试: ...

  8. 淘宝店铺链接获取seller id,拿到店铺所有商品接口,店铺所有商品接口,接口接入技术解决方案

    一.接口参数说明: 方式一:通过淘宝店铺主链接,调用get_seller_id - 获取淘宝seller_id接口,拿到淘宝seller id,然后再调用item_search_shop - 获得店铺 ...

  9. JS逆向加密——某宝sign参数分析

    某宝sign参数分析 这里只做分析用途, 作为学习和交流 !!!! 1. 抓包分析  (这里是店铺搜索来作为分析) 多抓几次 包对比 动态变化的参数 : page  页数 q 搜索关键字 t 时间戳 ...

最新文章

  1. new Date 兼容性问题
  2. Android之Log工具类使用
  3. centos(linux) 下如何查看端口占用情况及杀死进程
  4. wstring 截取_StringUtils截取字符substringBefore等方法使用
  5. 微信小程序,小游戏sockect报错修复集合
  6. C++设计模式-策略模式(Strategy)基本轮廓
  7. UI登录表单使用模板素材
  8. sql 分页查询 (每次6行 )
  9. 【渝粤教育】电大中专计算机应用基础作业 题库
  10. Cannot forward ... response ... committed
  11. 计算机电子表格编辑栏,#wps显示不出来excle#WPSexcel怎么把表格里的内容全部显示在编辑栏里...
  12. 潘丽云:魏尔斯特拉斯的复变函数思想分析(2009)(2011-01-14 22:34:30)
  13. 714 买卖股票的最佳时机含手续费(状态机dp)
  14. 每日一题之 781. 森林中的兔子
  15. 绩效考核的五大原则,你知道吗?
  16. 初学Unity3D——材质球
  17. [转]Apache Ignite——新一代数据库缓存系统
  18. 如何重装windows10系统(超详细图文版)
  19. 安装爬虫框架Scrapy,安装后运行不了~
  20. PCIe四通道光纤数据传输板PCIe-Fib-4Ch5G

热门文章

  1. 3月28日出生的赵姓女孩根据生辰八字取名字有内涵诗意的名字
  2. 软件测试 | 测试开发 | Golang开发入门(一)
  3. 爱情测试MySQL存储_当爱情的剧本,多出现一个人【mysql】
  4. Enea公司----OSE/OSEck RTOS --2
  5. 【转】KMSmicro v3.10完美激活win8+office 2013+Visio 2013+Project 2013 VOL
  6. 一张图让你理清渗透思路
  7. JD6606S有TID号的硬件PD协议芯片资料
  8. 虚拟机和主机相互ping不通方法总结
  9. Samtec技术前沿 | 全新电缆系统提升了热管理并延长了信号覆盖范围
  10. ssm毕设项目考研信息志愿采集与推荐系统r53k4(java+VUE+Mybatis+Maven+Mysql+sprnig)