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

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

1.1 接口识别与分析

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

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

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

text

https://www.dianping.com/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.compile(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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值