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

如何用Python向Google Lens上传图片?解析请求参数及编码方法

Google Lens爬取问题解析与实现思路

1. 找不到图片上传请求的原因

  • Google Lens的图片上传并非直接携带图片到搜索接口,而是先将图片上传至Google后端存储服务,返回一个资源标识(即你看到的p参数),再用这个标识发起搜索请求。
  • 上传请求属于XHR/Fetch类型的异步请求,默认可能在Network面板中被过滤,需要:
    • 勾选Network面板的Preserve log选项,避免页面跳转后请求被清空。
    • 切换到XHR/Fetch标签页查看,而非Document标签。
  • 部分请求可能被前端代码加密或隐藏,需要查看页面JS逻辑(比如上传相关函数)定位真实接口。

2. 关于p参数的说明

  • p参数不存储完整图片内容,它是图片上传后生成的唯一资源标识符(类似Google内部文件ID或哈希值),所以长度远小于图片本身的Base64编码。
  • 它采用Google自定义的Base64变体编码(比如替换标准Base64的+//为-/_,并可能附加校验规则),直接用标准Base64解码会失败。

3. Python模拟图片上传并生成p参数的思路

需完整模拟浏览器的上传流程:

步骤1:准备请求头与Cookie

确保携带与浏览器一致的User-Agent、X-Client-Data、Cookie等信息(可从浏览器Network面板复制)。

步骤2:发送图片上传请求

使用requests库以multipart/form-data格式提交图片,示例代码如下:

import requests
import urllib.parse

cookies = {
    # 填入从浏览器复制的完整Cookie字段
    'CONSENT': 'PENDING+XXX',
    'SOCS': 'XXXXXXXXXXXXXXXXXXXXXXXXXXX',
    # ... 其他Cookie内容
}

headers = {
    'authority': 'lens.google.com',
    'accept': '*/*',
    'accept-language': 'de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36',
    # 其他必要请求头,如X-Client-Data
}

# 从浏览器Network面板获取真实上传接口地址
upload_url = "https://lens.google.com/upload"

# 构造multipart表单
files = {
    'file': ('target_image.jpg', open('target_image.jpg', 'rb'), 'image/jpeg')
}

# 发送上传请求
upload_response = requests.post(upload_url, cookies=cookies, headers=headers, files=files, allow_redirects=True)

# 从响应中提取p参数(需根据实际响应结构调整,示例从跳转URL中解析)
parsed_url = urllib.parse.urlparse(upload_response.url)
p_param = urllib.parse.parse_qs(parsed_url.query).get('p')[0]

步骤3:用p参数发起搜索请求

拿到p参数后,即可构造你提供的搜索请求,获取图片分析结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 10:10:31