#!/usr/bin/env python import json import requests import sys from requests_oauthlib import OAuth1 #Script takes in the block length as a command-line argument script, length = sys.argv METAWIKI_API = 'https://meta.wikimedia.org/w/api.php' def make_request(api, payload, post=False): config = json.loads(open('config.json').read()) auth = OAuth1(config['customer_token'], config['customer_secret'], config['access_token'], config['access_secret']) if post: return requests.post(api, data=payload, auth=auth) else: return requests.get(api, params=payload, auth=auth) ips = open('ips.txt', 'r').read().split('\n') for ip in ips: print('Blocking %s, open proxy' % ip) r = make_request(METAWIKI_API, { "action": "query", "format": "json", "meta": "tokens", "type": "csrf" }) token = r.json()['query']['tokens']['csrftoken'] r = make_request(METAWIKI_API, { "action": "globalblock", "format": "json", "target": ip, "expiry": length, "reason": "[[m:NOP|Open proxy]]", "token": token }) r = make_request(METAWIKI_API, { "action": "query", "format": "json", "meta": "tokens", "type": "csrf" }) token = r.json()['query']['tokens']['csrftoken'] r = make_request(METAWIKI_API, { "action": "block", "format": "json", "target": ip, "expiry": length, "reason": "[[m:NOP|Open proxy]]", "nocreate": 1, "autoblock": 1, "token": token }) ips.close()