深入分析大众点评 Ajax 接口:直接请求 JSON 数据高效获取评论

一、Ajax接口分析与逆向工程

1.1 接口识别与分析

大众点评网站采用前后端分离架构,通过Ajax接口动态加载数据。我们可以通过浏览器开发者工具来识别这些接口:

  1. 打开大众点评网站,进入任意商户页面
  2. 按F12打开开发者工具,切换到***work(网络)面板
  3. 刷新页面,筛选XHR或Fetch请求
  4. 查看请求响应,寻找包含评论数据的JSON接口

通过分析,我们发现大众点评评论数据主要通过以下接口获取:

text

https://www.dianping.***/ajax/json/shopDynamic/allReview?shopId={shopId}&cityId={cityId}&shopType={shopType}&page={page}&pageSize={pageSize}

1.2 接口参数分析

对接口进行深入分析后,我们识别出以下关键参数:

参数名 含义 示例
shopId 商户ID H9dNInbVZA9jJ5qH
cityId 城市ID 1(上海)
shopType 商户类型 10(美食)
page 页码 1
pageSize 每页数量 20
_token 加密令牌 动态生成

其中,<font style="color:rgb(15, 17, 21);background-color:rgb(235, 238, 242);">_token</font>参数是大众点评的反爬机制核心,需要特别处理。

1.3 加密参数逆向分析

大众点评使用JavaScript生成加密参数,我们可以通过以下方式分析:

// 大众点评token生成逻辑(简化版)
function generateToken() {
    var e = Math.floor((new Date).getTime() / 1e3);
    return md5("".concat(e).concat("some_secret_key"));
}

实际环境中,我们需要使用Python重现这一加密逻辑。

二、环境准备与依赖安装

2.1 JavaScript环境配置

由于大众点评使用JavaScript生成加密参数,我们需要在Python中执行JS代码:

# 安装Node.js(用于执行JavaScript代码)
# 访问 https://nodejs.org/ 下载并安装

# 安装PyExecJS
pip install pyexecjs

三、核心代码实现

3.1 加密参数生成器

import execjs
import time
import hashlib

class DianpingTokenGenerator:
    def __init__(self):
        # 加载JavaScript加密代码
        with open('dianping_encrypt.js', 'r', encoding='utf-8') as f:
            js_code = f.read()
        self.ctx = execjs.***pile(js_code)
    
    def generate_token(self):
        """生成大众点评接口所需的_token参数"""
        timestamp = int(time.time())
        # 调用JavaScript代码生成token
        token = self.ctx.call('generateToken', timestamp)
        return token
    
    def generate_signature(self, params):
        """生成请求签名"""
        # 对参数进行排序并拼接
        sorted_params = sorted(params.items(), key=lambd
转载请说明出处内容投诉
CSS教程网 » 深入分析大众点评 Ajax 接口:直接请求 JSON 数据高效获取评论

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买