Skip to content

Instantly share code, notes, and snippets.

@elnx
Forked from jackyyf/vote.py
Created May 20, 2017 09:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save elnx/c903f5e4025525aa83ecd4b814cc4d67 to your computer and use it in GitHub Desktop.
Save elnx/c903f5e4025525aa83ecd4b814cc4d67 to your computer and use it in GitHub Desktop.
Gist by paste.py @ 2017-05-12 02:48:45.276199
import requests
import gevent
from gevent import monkey; monkey.patch_all(); del monkey
import random
import time
concurrent = 8
delay = 0.5
def get_user_agent():
user_agents = [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36',
'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36',
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30',
'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36',
'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0',
'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:53.0) Gecko/20100101 Firefox/53.0',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36',
]
return random.choice(user_agents)
def get_header():
header_template = {
'Content-Type': 'application/json',
'Origin': 'http://yst.fudan.edu.cn',
'Referer': 'http://yst.fudan.edu.cn/hongtan/vote/',
}
header_template['User-Agent'] = get_user_agent()
header_template['X-Forwarded-For'] = get_ip()
print 'Using IP:', header_template['X-Forwarded-For']
print 'Using User-Agent:', header_template['User-Agent']
return header_template
def ip2long(ip):
nums = map(int, ip.split('.'))
return (nums[0] << 24) | (nums[1] << 16) | (nums[2] << 8) | nums[3]
def long2ip(num):
ip = '%d.%d.%d.%d' % (num >> 24, (num >> 16) & 255, (num >> 8) & 255, num & 255)
return ip
def get_ip():
iprange = [
(ip2long('10.147.0.0'), 1 << 16),
(ip2long('10.102.0.0'), 1 << 16),
(ip2long('10.222.0.0'), 1 << 16),
(ip2long('10.240.0.0'), 1 << 16),
(ip2long('10.149.0.0'), 1 << 16),
(ip2long('60.176.0.0'), 1 << 20),
(ip2long('58.208.0.0'), 1 << 20),
(ip2long('36.16.0.0'), 1 << 20),
(ip2long('125.112.0.0'), 1 << 20),
(ip2long('58.246.0.0'), 1 << 17),
(ip2long('112.64.0.0'), 1 << 17),
(ip2long('139.226.0.0'), 1 << 17),
(ip2long('223.96.0.0'), 1 << 20),
(ip2long('221.176.0.0'), 1 << 19),
]
r = random.choice(iprange)
ip = long2ip(r[0] + random.randint(0, r[1]))
return ip
def worker():
while True:
resp = requests.post(post_url, data=payload, headers=get_header(), timeout=3).json()
if "error" in resp:
print 'Error:', resp["message"]
else:
print '%s vote(s) added!' % resp["description"]
time.sleep(delay)
payload = '["7e4d6963-4aed-44fe-a1d7-90ef3f7f83bd"]'
post_url = 'http://yst.fudan.edu.cn/hongtan/vote/api/user/votes/'
if __name__ == '__main__':
workers = []
for i in xrange(concurrent):
workers.append(gevent.spawn(worker))
gevent.joinall(workers)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment