# 淘宝店铺分析

## 获取相似店铺链接

店铺列表

```ts
interface ShopData {
  // 店铺名字
  shopName: string;
  // 店铺类型
  type: string;
}

type ShopDatas = ShopData[];
```

## 店铺详情

```ts
interface ShopDataDetail extends ShopData {
  // 旺旺链接
  wangLink: string;
}
```

### 店铺列表获取

1. 示例链接

(GET 请求)[https://shopsearch.taobao.com/browse/shop_search.htm?q=%E6%A3%AE%E9%A9%AC%E6%97%97%E8%88%B0%E5%BA%97&suggest=history_1&commend=all&ssid=s5-e&search_type=shop&sourceId=tb.index&spm=a21bo.jianhua.201856-taobao-item.2&ie=utf8&initiative_id=tbindexz_20170306&_input_charset=utf-8&wq=&suggest_query=&source=suggest]

参数分析

```js
/**
 * @param shopName 店铺名称
 * @param type 店铺类型 0 淘宝 1 天猫 3 全球购
 * @param location 店铺地址,多选,逗号隔开
 * @param rele 索引类型 title 店铺名称, wangwang 旺旺名称
 * @param sort default 排序类型 按销量降序,由大到小 sale-desc 按信用降序，由大到小 credit-desc
 * @param pageNum 起始个数,每次固定查20个pageNum
 * @param pageSize 查询个数固定20个
 * @param goodrate 好评率,逗号隔开98%以上 -> 9800%, 60%-80% -> 6000%,8000%
 * @param ratesum 当isb类型为0的时候,ratesum jin 金冠店，huang 皇冠店，zhuan 钻级店，xin 心级店
 */
`https://shopsearch.taobao.com/browse/shop_search.htm?q=${shopName}&isb=${type}&loc=${location}&rele_field=${rele}&sort=${sort}&s=${
  pageNum * pageSize
}&goodrate=9800%2C&ratesum=jin`;
```

2. 数据提取

```html
<script>
  g_page_config = {};
</script>
```

### 相似店铺

1. 示例链接

(GET 请求)[https://shopsearch.taobao.com/search?spm=a230r.7195193.1997079397.27.3ffaa9845396uj&user_id=397341302]

参数分析

```js
/**
 * @param spm 
 * @param user_id 相似的店铺user_id 在初始列表中获取similarUrl 链接
 */
`https://shopsearch.taobao.com/search?spm=a230r.7195193.1997079397.27.3ffaa9845396uj&user_id=397341302`;
```

拼接url

```js
`https://shopsearch.taobao.com${similarUrl}`
```

2. 数据提取

```html
<script>
  g_page_config = {};
</script>
```

### 旺旺链接获取链路

1. 店铺详情

从初始店铺列表或者相似店铺列表取出 shopUrl

访问shopUrl

2. 首先根据

(GET 请求)[https://dispatch.taobao.com/getRealCid.aw?fromurl=semir.tmall.com/shop/view_shop.htm&t=20fc6345ea20a74f05d37cdb9160c703&toId=cntaobao%E6%A3%AE%E9%A9%AC%E5%AE%98%E6%96%B9%E6%97%97%E8%88%B0%E5%BA%97&charset=utf-8&clientX=181&clientY=81&fromId=cntaobao%E5%8A%A8%E6%84%9F%E5%9C%B0%E5%B8%A644507223&encryptToUid=&bizType=&bizDomain=&pageSource=&appKey=&sceneParam=]

参数分析

```js
/**
 * @param location.hostname 
 * @param location.pathname
 * @param Cookie.t 取cookie中的t值
 * @param shopName 店铺名称 从店铺列表或者相似列表中的encodeNick 中获取
 * @param Cookie.lid 请求对话的用户名称
 */
`https://dispatch.taobao.com/getRealCid.aw?fromurl=${location.hostname+location.pathname}&t=${Cookie#t}&toId=cntaobao${shopName}&charset=utf-8&clientX=181&clientY=81&fromId=cntaobao${Cookie#lid}&encryptToUid=&bizType=&bizDomain=&pageSource=&appKey=&sceneParam=`
```

获取一个 realcid,然后将 realcid 的值

```js
/**
 * @param realcid 从上一步分析过来的realcid
 * @param d 可为空
 */
const wangLink =
  "https://market.m.taobao.com/app/im/chat/index.html?&uid=" +
  encodeURIComponent(realcid) +
  "&gid=" +
  d +
  "&type=web";
```

最后形成一个旺旺链接
