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

如何计算OAuth请求的device_id与device_token以爬取OLX.pl手机号

解决OLX.pl OAuth请求中device_id和device_token的生成问题

背景

你要爬取OLX.pl的广告手机号,需通过两步API请求获取权限,其中第一步的device_id和device_token是未在HTML源码中暴露的关键参数,这两个字段是OLX用于标识会话/设备的认证项,具体生成方法如下:


1. device_id 生成方式

device_id是标准的UUID v4字符串,格式为8-4-4-4-12的十六进制字符组合(例如a1b2c3d4-5678-90ef-ghij-klmnopqrstuv)。

直接用编程语言生成即可,无需与OLX后端提前校验:

  • Python 示例:
    import uuid
    device_id = str(uuid.uuid4())
    
  • JavaScript 示例:
    const device_id = crypto.randomUUID();
    

2. device_token 生成方式

device_token是基于HS256算法签名的JWT令牌,Payload必须包含两个字段:

  • device_id: 刚才生成的UUID字符串
  • exp: 过期时间戳(建议设置为当前时间+3600秒,即1小时后)

签名使用OLX web端的固定密钥:web-main-secret(可通过浏览器开发者工具分析OLX前端代码确认该密钥)。

Python 生成示例:

import jwt
import time
import uuid

device_id = str(uuid.uuid4())
exp_time = int(time.time()) + 3600  # 1小时后过期

payload = {
    "device_id": device_id,
    "exp": exp_time
}

device_token = jwt.encode(payload, "web-main-secret", algorithm="HS256")

3. 请求验证

将所有参数打包为application/x-www-form-urlencoded格式,POST到https://www.olx.pl/api/open/oauth/token/,参数列表:

client_id: [从广告页面HTML源码提取的client_id]
client_secret: [从HTML源码提取的client_secret]
grant_type: device
scope: i2 read write v2
device_id: [生成的UUID]
device_token: [生成的JWT]

请求成功后会返回包含access_token的响应,使用该Token请求/api/v1/offers/{offer_id}/limited-phones/即可获取目标手机号。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 03:31:03