在 python 中被重定向 URL 3

Getting redirected URL in python 3

我想在重定向后获取页面地址。我有以下代码

url = 'https://simple.wikipedia.org/wiki/Gcd'
print(urlopen(url).geturl())

但它不起作用,它打印 https://simple.wikipedia.org/wiki/Gcd, while it should print https://simple.wikipedia.org/wiki/Greatest_common_divisor

那么,它有什么问题呢?

其实是没有问题的。打开 https://simple.wikipedia.org/wiki/Gcd 时得到的 URL 正是 URL。 URL 更改的唯一方法是重定向,如果您查看 URL 的响应,您会发现它 returns 只是一个 200 状态代码。所以没有重定向。

但是,当您在浏览器中打开 URL 时,URL 确实会更改为 https://simple.wikipedia.org/wiki/Greatest_common_divisor。如果没有重定向,这是怎么发生的?

这实际上是一个新的 MediaWiki 功能,它使用 History API 在浏览器中重写了 URL。它只是替换了浏览器中显示的 URL,但实际上并没有发出新请求或成为真正的 HTTP 重定向。

此功能仅适用于启用 JavaScript 的现代浏览器。否则,您将停留在 Gcd URL 上,这也是旧版本 MediaWiki 的行为。

您可以在 Phabricator task T37045.

中了解有关此新 MediaWiki 功能的更多信息

至于你的“问题”,你应该考虑使用 MediaWiki API 与 MediaWiki 沟通,当页面是重定向时它也会告诉你。