
¿Qué hacer cuando Crawler Guy se encuentra con Network 404?
Hecho el rastreo de datos hermanos entender, el más temeroso de la situación es: el código funciona bien, de repente te dan una cara no funciona. En este momento el ochenta por ciento se activa por el mecanismo anti-escalada del sitio de destino, directamente a su dirección IP fuera de la pequeña habitación negro. Esta vez usted necesita para encontrar un sustituto para ayudarle a trabajar - es decir, tenemos que regañar a día de hoy.IP proxy.
Por ejemplo, desea obtener un dato JSON remoto utilizando la biblioteca de peticiones de Python:
solicitudes de importación
url = 'https://api.example.com/data.json'
response = requests.get(url)
print(respuesta.json())
Ejecútalo unas cuantas veces y verás que devuelve un error 403. Este es el momento de tirar del truco de la IP proxy y hacer creer al servidor que está accediendo una persona diferente.
La forma correcta de abrir una IP proxy
Aquí viene lo bueno. Utilizar una IP proxy no es sólo cuestión de encontrar una dirección al azar y rellenarla, es cuestión de estrategia. He aquí algunas recomendacionesipipgoServicio a domicilio, su reserva de IP es tan grande como un mercado de marisco, y pueden conseguirte un chaleco nuevo con cada solicitud.
El código modificado tiene el siguiente aspecto:
solicitudes de importación
proxies = {
'http': 'http://用户名:密码@gateway.ipipgo.com:9020',
https: http://用户名:密码@gateway.ipipgo.com:9020
}
try.
response = requests.get(url, proxies=proxies, timeout=10)
response.raise_for_status()
datos = respuesta.json()
except requests.exceptions.RequestException as e:: print(f "f", "f", "f", "f", "f")
print(f "Solicitud de prórroga: {str(e)}")
Obsérvese el uso deNombre de usuario Contraseña Formato de autenticaciónMuchos novatos rellenan la dirección IP directamente sin información de autenticación, y como resultado, no pueden conectarse. El formato de dirección proxy de ipipgo es particularmente simple, sólo tienes que copiarlo según su documentación.
Guía práctica para evitar errores
Nombra algunos lugares fáciles para plantar la cabeza:
1. Tiempo de supervivencia en PIproxy gratuito: a menudo se utiliza dos veces en el cuelgue, se recomienda utilizar el proxy dinámico de corta duración de ipipgo, ¡cada solicitud se sustituye automáticamente!
2. Ajustes de tiempo de esperaNo olvides añadir el parámetro de tiempo de espera, se recomiendan 5-10 segundos.
3. Tratamiento de excepciones: Las peticiones web no son tan fiables como 100% y deben ser correctamente try-excepted.
4. Análisis JSON: A veces el retorno no es JSON estándar, primero response.text para ver los datos originales
Botiquín QA blanco
P: ¿Qué debo hacer si la IP de mi proxy siempre se agota?
R: Primero compruebe que el formato de la dirección proxy es correcto, especialmente los símbolos especiales en el nombre de usuario y la contraseña deben estar codificados en URL. Si confirma que el formato es correcto, puede ponerse en contacto con el servicio de atención al cliente de ipipgo para comprobar el estado del nodo.
P: ¿Tengo que cambiar manualmente mi IP cada vez?
R: No con el paquete de sondeo de ipipgo, cambian automáticamente a nivel de puerta de enlace, simplemente mantenga la misma dirección proxy en el código.
P: ¿Qué debo hacer si encuentro un error de certificado SSL?
R: Añade el parámetro verify=False en requests.get(), pero esto no es muy seguro. Sugiere verificar el certificado raíz del sistema, o usar el canal proxy HTTPS de ipipgo.
¿Por qué ipipgo?
No es una venta difícil, es una experiencia de sangre y lágrimas. He utilizado 7 u 8 proveedores de servicios antes, y finalmente me decidí por ipipgo por tres razones:
1. La velocidad de respuesta es de primera, básicamente en 200 ms.
2. Más de 200 líneas urbanas en todo el país, muy potentes cuando se necesita IP en zonas específicas.
3. La gestión de fondo puede ver el consumo en tiempo real, sin miedo a los excesos
4. el soporte técnico es una persona real, la última vez que planteé una orden de trabajo a las dos de la madrugada, me la contestaron en un segundo.
También han sacado recientemente unEnrutamiento inteligentepuede seleccionar automáticamente la línea más rápida. Para la escena que necesita leer datos JSON estable, es simplemente la existencia de la apertura. Nuevo registro de usuario también envía tráfico 5G, suficiente para la prueba.
La solución definitiva
Una solución completa para los alcanzadores:
from requests.adapters import HTTPAdapter
session = requests.Session()
session.mount('http://', HTTPAdapter(max_retries=3))
session.mount('https://', HTTPAdapter(max_retries=3))
def fetch_json(url):
proxies = ipipgo.get_proxy() Llama a la API de ipipgo para obtener los últimos proxies.
inténtalo.
response = session.get(url, proxies=proxies, timeout=(3, 7))
return respuesta.json()
except JSONDecodeError: print("JSONDecodeError", "JSONDecodeError").
print("Los datos devueltos no están en formato JSON.")
return Ninguno
Esta solución añade tres seguros: reintento de conexión, adquisición automática de nueva IP y captura de excepciones. Usando la API de ipipgo puedes obtener directamente la última dirección proxy disponible, lo cual es mucho menos molesto que mantener tu propio pool de IPs.
Por último, para ser sinceros, las IP proxy valen cada céntimo. Si el proyecto es importante, no ahorres en el presupuesto. Al fin y al cabo, la pérdida de tiempo de inactividad debida al bloqueo del servidor puede ser mucho más cara que la tarifa del proxy.

