如何列出从特定 IP 地址对维基百科进行的所有匿名(因此 IP 公开)编辑?

问题描述 投票:0回答:2

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

193.224.28.151

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

Tom Scott 网页上,我读到:

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

还有一个事实:来自 Houses of 的所有网络流量 议会通过两个代理服务器之一发送 - 这意味着 议会内部对维基百科的每一次匿名编辑都会被归咎于 到仅有的两个 IP 地址之一。

我相信你能明白这是怎么回事。

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

python ip-address wikipedia wikipedia-api pywikibot
2个回答
4
投票

您可以使用特殊:贡献页面查看维基百科帐户、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

如果您希望通过维基百科的 API 查看维基百科帐户和个人 IP 地址的贡献,可以在 https://www.mediawiki.org/wiki/API:Usercontribs

获取文档和示例

2
投票

使用 Pywikibot 您可以按如下方式使用 MediaWiki API:

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

User 是一个派生自 pywikibot.Page 的类,它代表一个用户,并且有一个方法来检索他的贡献。该方法是 contributions() ,它是一个生成器,并生成 pywikibot.Page (可用于获取更多信息的 Page 对象)、 revid (修订版 ID)、 pywikibot.Timestamp (派生的对象)从日期时间),评论(编辑摘要)。要获取最近 5 次编辑,您可以使用:

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

这会检索如下条目:

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

要获取一系列ip,您可以使用相应的站点方法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()。它们可用于过滤结果,例如用于特定名称空间或仅检索页面的最顶层编辑。该文档可以在这里找到。

© www.soinside.com 2019 - 2024. All rights reserved.