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

2024-05-18 15:19:08 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个IP地址,例如IP address of the Hungarian Parliament:193.224.28.151

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

关于a Tom Scott webpage,我读到:

Here's a fact: Wikipedia stores the IP addresses of anonymous users.

Here's another fact: all of the web traffic from the Houses of Parliament is sent through one of two proxy servers — which means that every anonymous edit to Wikipedia from within Parliament is attributed to one of just two IP addresses.

I'm sure you can see where this is going.

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


Tags: ofthetofromiphereisaddress
2条回答

您可以使用“特殊:贡献”页面查看来自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

使用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(从datetime派生的对象)、注释(编辑摘要)。要获取最后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))

对于每个条目,您都会得到一个如下的dict:

{'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()。它们可用于过滤结果,例如针对特定命名空间或仅检索页面的最顶端编辑。文件可在here找到

相关问题 更多 >

    热门问题