Python 访问此网站时程序 times-out

Python program times-out when hitting this website

为什么这个函数无法从“https://www.seattletimes.com/feed/”读取XML?

我可以从我的浏览器访问 URL 很好。它还从其他网站 读取 XML 没有问题 ("https://news.ycombinator.com/rss").

import urllib


def get_url(u):
    header = {'User-Agent': 'Mozilla/5.0'}
    request = urllib.request.Request(url=url, headers=header)
    response = urllib.request.urlopen(request)
    return response.read().decode('utf-8')

url = 'https://www.seattletimes.com/feed/'

feed = get_url(url)

print(feed)

程序每次都超时

想法?:

编辑 1:

我用我的浏览器 header 替换了来自脚本的请求 header。还是no-go.

header = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'Accept-Encoding': 'gzip, deflate',
    'Accept-Language': 'en-US,en;q=0.9',
    'Connection': 'keep-alive',
    'Accept-Language': 'en-US,en;q=0.9',
    'Connection': 'keep-alive',
    'Upgrade-Insecure-Requests': '1',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36' }

我不太清楚为什么 header/user-agent 会混淆网站。如果删除它,您的代码就可以正常工作。我已经尝试了不同的 header 参数而没有问题,user-agent 似乎是导致该行为的原因。

import urllib.request


def get_url(u):
    request = urllib.request.Request(url=url)
    response = urllib.request.urlopen(request)
    return response.read().decode('utf-8')

url = 'https://www.seattletimes.com/feed/'

feed = get_url(url)

print(feed)

经过一些调试后,我发现了一个合法的 header 组合(请记住,我认为这是他们的错误):

  header = {
        'User-Agent': 'Mozilla/5.0',
        'Cookie': 'PHPSESSID=kfdkdofsdj99g36l443862qeq2',
        'Accept-Language': "de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7",}