prefacio
Ahora, algunas competencias requieren que los equipos participantes soliciten votos en línea para promover patrocinadores o la competencia en sí, e incluso la cantidad de votos representará un cierto porcentaje de los resultados. Por lo tanto, los boletos deslizados surgieron. Esta vez, nuestro equipo participa en una competencia, y necesitamos votar en línea para determinar los primeros. Como técnico, por supuesto, tenemos que "resolver" problemas que pueden resolverse con tecnología, por lo que escribimos un complemento para votación.
principio
El principio de deslizar los votos es muy simple, es equivalente a simular que una persona inicie sesión en el sitio web para votar, pero el proceso está programado para que el programa reemplace a la persona para ir al sitio web a votar. Para ser más específicos, primero, el cliente (nosotros) envía una solicitud (Solicitud) al servidor (sitio web de votación), diciéndoles que necesitamos leer la información en su sitio web, y luego el servidor nos responderá (Responder). , y luego les enviaremos el formulario completo (Solicitud), y ellos nos responderán (Respuesta) cuando lo reciban.
contenido principal
- analizando el sitio
- envío de formulario
- Construir grupo de IP de proxy
1. Analizando el sitio web
Dado que la información que cada sitio web debe enviar es diferente, primero debemos analizar el sitio web de destino en consecuencia para averiguar su interfaz de formulario (es decir, URL o URL) y la información que debemos enviar.
1.1 Recopilación de información
Use F12 para abrir el elemento de auditoría, haga clic en Red y envíe un formulario
Los dos contenidos enmarcados son parte de la información del formulario que necesitamos saber
- URL de solicitud: URL de solicitud, la información que enviamos se pasa a esta URL
- Método de solicitud: el método de solicitud, el método que enviamos
anteriormente es la información básica que debe obtenerse. Con base en esta información, podemos escribir un complemento para pasar boletos, pero como programador que tiene altos estándares y requisitos estrictos para él mismo, esto es suficiente? Por supuesto que no, tenemos que averiguar si hay lagunas en este proceso de presentación.
¿Cómo encontrarlo? Analicé el código fuente, lo busqué y ¡lo encontré!
Vea lo que hay, tiene dos lagunas fatales aquí:
\1.Permite presentar 3 o más equipos, y no hay límite en el número máximo, solo el número mínimo.
\2 No filtra los mismos datos.
envío de formulario
Construir información de formulario
# 请求头信息
headers = {
'Accept': '*/*',
'Accept-Encoding': 'gzip',
'Accept-Language': 'zh-CN',
'Connection': 'keep-alive',
'Content-Length': '16',
'Content-Type': 'application/x-www-form-urlencoded',
'Host': 'www.dingnf.com',
'Origin': 'http://www.dingnf.com',
'Referer': 'http://www.dingnf.com/active/wxws_s',
'User-Agent': 'Mozilla/4.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.3029.110 Safari/537.36',
'X-Requested-With': 'XMLHttpRequest'
}
# post表单网址
url = "http://www.dingnf.com/active/wxws_t"
params = {'ids': ['22', '22', '22']}
r = requests.post(url=url, data=params, headers=headers, proxies=proxies)
Construir grupo de IP de proxy
Construir contenedor de proxy IP
def WriteIPadress():
all_url = [] # 存储IP地址的容器
# 代理IP的网址
url = "http://api.xicidaili.com/free2016.txt"
r = requests.get(url=url)
all_url = re.findall("d+.d+.d+.d+:d+",r.text)
with open("D:\code\python\new\Brush ticket\IP.txt",'w') as f:
for i in all_url:
f.write(i)
f.write('
')
return all_url
función principal
Debido a que algunas direcciones IP son problemáticas, se debe configurar el manejo de excepciones para que el programa pueda ejecutarse normalmente, y los datos de la API se actualizan cada 15 minutos, y el tiempo que recorremos la lista es aproximadamente el mismo, por lo que no 't hacer cualquier otra cosa tratada.
ejecutar registro
el código
Además, me temo que no todos lo usarán, así que he preparado el escrito para ti, ¡y puedes usarlo directamente!
El código fuente se coloca en el disco en la nube de Baidu. Debe escanear el código QR de la certificación oficial de CSDN a continuación en WeChat para recibirlo de forma gratuita.
Acerca de los materiales de aprendizaje de Python:
1. Rutas de aprendizaje en todas las direcciones de Python
Los puntos técnicos en todas las direcciones de Python se ordenan para formar un resumen de los puntos de conocimiento en varios campos. Su utilidad radica en que puede encontrar los recursos de aprendizaje correspondientes de acuerdo con los puntos de conocimiento anteriores para garantizar que pueda aprender de manera más integral.
2. Herramientas de desarrollo esenciales para Python
4. Colección de videos de Python
Ver el video de aprendizaje basado en cero es la forma más rápida y efectiva de aprender. Siguiendo las ideas del maestro en el video, aún es muy fácil comenzar desde lo básico hasta lo más profundo.
5. Casos prácticos
La teoría óptica es inútil, tienes que aprender a seguirla, y tienes que hacerlo tú mismo, para que puedas aplicar lo que has aprendido a la práctica. En este momento, puedes aprender de algunos casos reales de combate.
6. Ejercicios de Python
Comprobar los resultados del aprendizaje.
7. Información de la entrevista
Debemos aprender Python para encontrar trabajos bien remunerados. Las siguientes preguntas de la entrevista son los materiales de entrevista más recientes de compañías de Internet de primera línea como Ali, Tencent y Byte, y los jefes de Ali han dado respuestas autorizadas. Después de terminar este conjunto Los materiales de la entrevista creen que todo el mundo puede encontrar un trabajo satisfactorio.
Esta versión completa del conjunto completo de materiales de aprendizaje de Python se ha subido a CSDN. Si lo necesita, puede guardar la imagen a continuación en su teléfono móvil y escanear el código QR de la certificación oficial de CSDN en WeChat para obtenerlo de forma gratuita [ 100 % de garantía gratis]