You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python模拟AJAX POST请求获取页面隐藏的电话号码?

伪造AJAX POST请求抓取隐藏手机号的实现步骤

要获取页面中点击加载的完整手机号,核心是还原浏览器触发的AJAX请求,具体操作如下:

1. 分析AJAX请求的关键信息

打开浏览器开发者工具(F12)切换到网络面板,点击页面上的手机号按钮,找到触发的POST请求,记录以下内容:

  • 请求的目标接口URL(比如类似/ajax/get-phone/这类路径)
  • 请求携带的参数(比如车辆ID、csrf令牌等,可能是表单数据或JSON格式)
  • 必须携带的请求头字段(比如X-Requested-With: XMLHttpRequest,多数网站会校验这个AJAX请求标识)

2. 从页面源码提取必要参数

从已获取的页面响应中,提取AJAX请求需要的参数,示例代码如下:

# 提取车辆ID(假设按钮元素带有data-id属性)
car_id = soup.find('button', class_='phone-btn')['data-id']

# 提取csrf令牌(假设页面meta标签中存在该字段)
csrf_token = soup.find('meta', attrs={'name': 'csrf-token'})['content']

3. 构造并发送POST请求

利用已创建的Session(自动维护Cookie),补充AJAX请求专属头信息,发送请求并解析结果:

# 复制基础请求头并补充AJAX所需字段
ajax_headers = headers.copy()
ajax_headers.update({
    "Accept": "application/json, text/javascript, */*; q=0.01",
    "X-Requested-With": "XMLHttpRequest",
    "Referer": "https://www.mashina.kg/details/kia-sorento-64631fe26592a662606296"
})

# 构造请求参数(根据实际抓包结果调整)
payload = {
    "car_id": car_id,
    "csrfmiddlewaretoken": csrf_token
}

# 发送POST请求(替换为实际的AJAX接口URL)
ajax_response = s.post(
    "https://www.mashina.kg/ajax/load-phone/",
    headers=ajax_headers,
    data=payload  # 若接口接收JSON格式,改用json=payload
)

# 解析返回数据并提取手机号
phone_data = json.loads(ajax_response.text)
full_phone = phone_data.get('phone')
print(full_phone)

注意事项

  • 部分网站有反爬限制,可添加time.sleep(1)控制请求频率,避免被封禁
  • 若请求失败,检查Cookie有效性、参数完整性,是否存在加密签名类参数需要模拟
  • 保持User-Agent与浏览器一致,降低被识别为爬虫的概率

内容的提问来源于stack exchange,提问作者Jensen Benny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 06:10:05