TL;DR
Colly acepta una función de proxy estándar a través de SetProxyFunc. Utilice su proxy.RoundRobinProxySwitcher para la rotación simple de endpoints, establezca un paralelismo y retrasos conservadores, y registre resultados sin credenciales. Mantenga un endpoint fijo para sesiones con estado; rote solo solicitudes independientes y autorizadas.
Configure un Proxy en Colly
El ejemplo de cambiador de proxy oficial de Colly utiliza RoundRobinProxySwitcher, que admite URLs de proxy HTTP, HTTPS y SOCKS5.
go get github.com/gocolly/colly/v2
package main import ( "fmt" "log" "github.com/gocolly/colly/v2" "github.com/gocolly/colly/v2/proxy" ) func main() { switcher, err := proxy.RoundRobinProxySwitcher( "http://USER:PASS@gate-1.example:8000", "http://USER:PASS@gate-2.example:8000", ) if err != nil { log.Fatal(err) } c := colly.NewCollector( colly.AllowedDomains("example.com"), colly.Async(true), ) c.SetProxyFunc(switcher) c.OnResponse(func(r *colly.Response) { fmt.Printf("status=%d bytes=%d url=%s\n", r.StatusCode, len(r.Body), r.Request.URL) }) c.OnError(func(r *colly.Response, err error) { fmt.Printf("status=%d error=%v url=%s\n", r.StatusCode, err, r.Request.URL) }) c.Visit("https://example.com/authorized-page") c.Wait() }
Reemplace las puertas de enlace de muestra con sus endpoints de proxy residencial Nstdata autorizados. Almacene credenciales fuera del archivo fuente.
Modelo mental: Colly controla el comportamiento de rastreo; el proxy cambia el origen de la red. Ninguno de los dos reemplaza la autorización o el control de tasas.
Añadir Paralelismo y Retraso Limitados
Aplique límites antes de aumentar el rendimiento:
err := c.Limit(&colly.LimitRule{ DomainGlob: "*example.com*", Parallelism: 4, Delay: 750 * time.Millisecond, RandomDelay: 500 * time.Millisecond, }) if err != nil { log.Fatal(err) }
Importe time para este fragmento. Establezca los valores según el presupuesto de solicitudes permitido por el sitio, no desde la máxima que su máquina puede enviar.
Elegir Rotación o Sesiones Fijas
La rotación round-robin es adecuada para páginas públicas independientes cuando se requiere una distribución de ubicación. Los flujos de inicio de sesión, carritos y navegación de varios pasos a menudo necesitan la misma salida y jarra de cookies. Para esos, dedique un colector o endpoint proxy a la sesión en lugar de rotar a mitad de camino.
Si una respuesta devuelve 429, respete Retry-After y reduzca el tráfico. Trate los códigos 401, 403, o páginas de desafío como una razón para verificar permisos e integración, no como un aviso para intensificar tácticas de evasión.
Lista de Verificación de Producción
- Permita dominios de destino y patrones de URL.
- Configure tiempos de espera de conexión y respuesta.
- Limite el tamaño de la cola, profundidad, páginas, reintentos y bytes de respuesta.
- Registre la etiqueta del proxy, estado, latencia, recuento de reintentos y resultado del analizador.
- Oculte nombres de usuario y contraseñas de los registros.
- Elimine URLs canónicas duplicadas antes de las visitas.
- Detenga automáticamente cuando la tasa de errores o la tasa de bloqueo cruzan un umbral.
Veredicto Final
Para una integración de proxy de Colly, comience con RoundRobinProxySwitcher, luego añada restricciones de dominio, ritmo, tiempos de espera y manejo de fallos observables. Use Nstdata cuando su carga de trabajo autorizada necesite enrutamiento residencial o gestión de proxy centralizada; use Nstdata Crawl en su lugar cuando la salida de página limpia importa más que controlar cada solicitud.
Experimente Nstdata — Comience su Prueba Gratuita Hoy
FAQ
¿Colly rota proxies automáticamente?
No hasta que proporcione una función de proxy. El paquete proxy incluido ofrece un cambiador round-robin.
¿Puede Colly usar SOCKS5?
Sí. La documentación oficial del cambiador enumera URLs de proxy SOCKS5.
¿Por qué la rotación interrumpe un rastreo?
Los sitios con estado pueden vincular cookies o sesiones a una identidad de red. Use un endpoint fijo para el flujo completo.




