2

假设我有一个 IP 地址,例如匈牙利议会的 IP 地址193.224.28.151

如何获取使用此 IP 地址进行的所有 Wikipeida 编辑的列表?

汤姆斯科特网页上,我读到:

这是一个事实:维基百科存储匿名用户的 IP 地址。

这是另一个事实:来自议会大厦的所有网络流量都是通过两个代理服务器之一发送的——这意味着从议会内部对维基百科的每次匿名编辑都归因于两个 IP 地址之一。

我相信你可以看到这是怎么回事。

我还没有找到这个项目的存储库。如果它可以在浏览器中完成,或者可以使用 Python,那就太好了。

4

2 回答 2

3

您可以使用 Special:Contributions 页面查看来自 Wikipedia 帐户、IP 地址或 IP 范围的贡献。例如,https: //en.wikipedia.org/wiki/Special: Contributions/193.224.28.151 列出了从 193.224.28.151 进行的编辑。您还可以查看来自 IP 范围的编辑,例如https://en.wikipedia.org/wiki/Special:Contributions/193.224.28.0/22

如果您希望通过 Wikipedia 的 API 查看来自 Wikipedia 帐户和个人 IP 地址的贡献,请访问https://www.mediawiki.org/wiki/API:Usercontribs获取文档和示例

于 2021-03-30T19:52:37.687 回答
2

使用Pywikibot,您可以使用 MediaWiki API,如下所示:

import pywikibot
site = pywikibot('Wikipedia:en')
user = pyikibot.User(site, '193.224.28.2')

User 是派生自 pywikibot.Page 的一个类,它代表一个用户,并且有一种方法可以检索他的贡献。该方法是contributions(),它是一个生成器,并产生pywikibot.Page(可用于进一步信息的页面对象)、revid(修订ID)、pywikibot.Timestamp(从日期时间派生的对象)、comment(编辑概括)。要获得最后 5 次编辑,您可以使用:

contribs = list(user.contributions(total=5))

这将检索以下条目:

(Page('History of Croatia'), 282343057, Timestamp(2009, 4, 7, 14, 10, 7), '')

要获得一系列 ips,您可以使用相应的站点方法usercontibs()但您必须自己上传内容:

list(site.usercontribs(userprefix='193.224.28.', total=5))

对于每个条目,您都会得到一个这样的字典:

{'comment': '',
 'ns': 0,
 'pageid': 5574,
 'parentid': 281875336,
 'revid': 282343057,
 'timestamp': '2009-04-07T14:10:07Z',
 'title': 'History of Croatia',
 'user': '193.224.28.2',
 'userid': 0}

Site.usercontribs()方法还有其他参数也可用于Page.contributions()。它们可用于过滤结果,例如针对特定名称空间或仅检索页面的最顶层编辑。文档可以在这里找到。

于 2021-04-01T09:51:54.350 回答