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

使用requests获取Google News链接重定向URL遇报错,如何解决?

Google News RSS链接重定向URL获取问题

问题描述

我需要从Google News的RSS链接中提取最终重定向的目标URL,示例如下:

  • 原始RSS链接:https://news.google.com/rss/articles/CBMiNWh0dHBzOi8vd3d3LmhhbmkuY28ua3IvYXJ0aS9jdWx0dXJlL2Jvb2svMTA4ODU4OC5odG1s0gEA?oc=5
  • 期望获取的目标URL:https://m.hani.co.kr/arti/culture/book/1088588.html

我编写了以下Python代码实现需求:

import requests

link = "https://news.google.com/rss/articles/CBMiNWh0dHBzOi8vd3d3LmhhbmkuY28ua3IvYXJ0aS9jdWx0dXJlL2Jvb2svMTA4ODU4OC5odG1s0gEA?oc=5"

r = requests.get(link)
print(r.url)

大部分链接能正常返回结果,但部分链接(如下方示例)会报错,需要明确报错原因并修复代码:

  • 报错的原始RSS链接:https://news.google.com/rss/articles/CBMiK2h0dHBzOi8vemRuZXQuY28ua3Ivdmlldy8_bm89MjAyMzA0MTYxMTA1NDnSAQA?oc=5
  • 期望获取的目标URL:https://zdnet.co.kr/view/?no=20230416110549

报错原因

  1. 反爬拦截:Google News会检测请求的合法性,直接使用requests.get()发送的请求缺少浏览器标识(如User-Agent),会被判定为爬虫,返回403等错误状态码,无法完成重定向流程。
  2. 目标站验证:部分目标网站(如示例中的ZDNet Korea)会配合Google的反爬逻辑,验证请求的来源和标识,无合法请求头的请求会被阻断,导致重定向失败。

解决方案

通过添加模拟真实浏览器的请求头,让请求通过反爬检测,同时保留requests自动处理重定向的逻辑。具体修改点:

  • 加入User-Agent字段模拟浏览器请求;
  • 可选添加Accept-Language等字段提升请求合法性;
  • 增加异常捕获,避免程序崩溃。

修改后的代码

import requests

def get_redirected_google_news_url(rss_link):
    # 模拟Chrome浏览器的请求头
    headers = {
        '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',
        'Accept-Language': 'ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7'
    }
    try:
        # allow_redirects=True为默认值,显式声明更清晰
        response = requests.get(rss_link, headers=headers, allow_redirects=True)
        response.raise_for_status()  # 主动抛出HTTP错误异常
        return response.url
    except requests.exceptions.RequestException as e:
        print(f"请求失败: {str(e)}")
        return None

# 测试报错的示例链接
test_link = "https://news.google.com/rss/articles/CBMiK2h0dHBzOi8vemRuZXQuY28ua3Ivdmlldy8_bm89MjAyMzA0MTYxMTA1NDnSAQA?oc=5"
result_url = get_redirected_google_news_url(test_link)
if result_url:
    print(f"重定向后的目标URL: {result_url}")

补充提示

  • User-Agent可以根据自己常用浏览器的真实标识调整,避免使用过于陈旧的标识;
  • 若仍出现拦截,可尝试添加Referer字段(值设为Google News主页),或使用requests.Session()维持会话状态;
  • 控制请求频率,短时间内大量请求会触发Google的频率限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 13:47:04