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

使用Python requests库自动提交Google Form返回200无接收数据问题

问题根源

你提交请求里的dlut、fbzx、draftResponse等参数属于谷歌表单每次加载生成的会话绑定动态参数,硬编码固定值会被谷歌后台判定为无效提交,所以即使返回200的成功页面,数据也不会被录入后台。

修复方案

  • 每次提交前先发起GET请求获取表单原始页面,提取页面中所有隐藏的非entry开头的动态参数,不要硬编码这些值
  • 提交请求时携带符合浏览器特征的User-Agent请求头,同时设置Referer为表单原始访问地址,降低被拦截概率
  • 提前核对所有entry.xxx参数和表单问题的对应关系,确认选项值、文本内容符合表单字段的校验规则

修正后参考代码

import string
import requests
import random
import re

# 表单基础地址
form_base_url = 'https://docs.google.com/forms/d/e/1FAIpQLSeI3-jkg0oedRXECibaxbGZiFyOHGYjvNiOXcADBK9Qq__gUg/'
submit_url = form_base_url + 'formResponse'

# 初始化会话,自动管理cookie
session = requests.Session()
session.headers.update({
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36',
    'Referer': form_base_url + 'viewform'
})

# 第一步:GET获取表单页面提取动态参数
res = session.get(form_base_url + 'viewform')
# 提取fbzx参数
fbzx = re.search(r'name="fbzx" value="(.*?)"', res.text).group(1)
# 提取dlut参数
dlut = re.search(r'name="dlut" value="(.*?)"', res.text).group(1)
# 提取draftResponse参数
draft_response = re.search(r'name="draftResponse" value="(.*?)"', res.text).group(1)

# 构造提交数据
tex = ''.join(random.choices(string.ascii_lowercase + string.ascii_uppercase, k=random.randint(10,20)))
post_data = {
    'entry.583812596': 2,
    'entry.1023010593': tex,
    'entry.583812596_sentinel': '',
    'fvv': 1,
    'pageHistory': 0,
    # 动态参数替换为实时提取的值
    'dlut': dlut,
    'draftResponse': draft_response,
    'fbzx': fbzx
}

# 提交请求
submit_res = session.post(submit_url, data=post_data)
print(submit_res.status_code)
with open('submit_result.html', 'w', encoding='utf-8') as f:
    f.write(submit_res.text)

如果表单设置了仅允许登录谷歌账号的用户提交,需要先在当前会话里完成谷歌账号登录,或者携带有效的登录态Cookie再发起提交请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:45:00