假设我有一个 IP 地址,例如 匈牙利议会的 IP 地址:
193.224.28.151
如何获取使用此 IP 地址进行的所有 Wikipeida 编辑的列表?
在 Tom Scott 网页上,我读到:
事实是:维基百科存储匿名用户的 IP 地址。
还有一个事实:来自 Houses of 的所有网络流量 议会通过两个代理服务器之一发送 - 这意味着 议会内部对维基百科的每一次匿名编辑都会被归咎于 到仅有的两个 IP 地址之一。
我相信你能明白这是怎么回事。
我还没有找到这样的项目的存储库。如果可以在浏览器中或者使用 Python 来完成,那就太好了。
您可以使用特殊:贡献页面查看维基百科帐户、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
获取文档和示例使用 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()。它们可用于过滤结果,例如用于特定名称空间或仅检索页面的最顶层编辑。该文档可以在这里找到。