Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

Como utilizar Proxy en PHP usando la librería Curl
#1

Si quieres saber como scrapear utilizando PHP te recomiendo este hilo:
http://foroblackhat.com/hilo-scrapear-ut...3%ADa-curl

Ahora vamos a tratar como Scrapear empleando Proxy, que es dar un pasito más en el scripting del Blackhatero Sonrisa

Vamos a trabajar con nuevas opciones de Curl que son:
CURLOPT_PROXY El proxy HTTP para enviar peticiones a través de tunel.
CURLOPT_PROXYTYPE: Puede ser CURLPROXY_HTTP (por defecto) o bien CURLPROXY_SOCKS5.
CURLOPT_HTTPPROXYTUNNEL: TRUE para usar un tunel a través de un proxy HTTP.
y en el caso de necesitar autentificación en el proxy serían:
CURLOPT_PROXYAUTH: Método de autenticación HTTP para usar conexiones vía proxy. Usa el mismo tipo de máscaras descritas en CURLOPT_HTTPAUTH. Para autenticación proxy, solamente CURLAUTH_BASIC y CURLAUTH_NTLM están actualmente soportadas.
CURLOPT_PROXYUSERPWD: Usuario y contraseña con el siguiente formato "[username]:[password]" para usarse en la conexión al proxy.

<?PHP
function get_content_url_with_proxy($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
curl_setopt($ch, CURLOPT_PROXY, 'ip:port');
curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_NTLM);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'username:password');
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8');

$data = curl_exec($ch);
curl_close($ch);

return $data;
}

Está en negrita lo que tienes que cambiar para que trabaje el Curl a través de un proxy. Si no hay autentificación en el proxy, quita o comenta las líneas con las opciones URLOPT_PROXYAUTH y CURLOPT_PROXYUSERPWD.


Cualquier duda para implementar esto en PHP, coméntala en este hilo.

Aquí puedes ver todas las opciones y sus posibles parámetros que puedes utilizar en Curl:
http://www.php.net/manual/es/function.curl-setopt.php

Canal SEO en Telegram premium
Influenet - Compra/Venta de artículos patrocinados. Sonrisa
Responder
#2

Buenas, he probado este codigo y no se por que no me funcionó.

He conseguido que me funcione cambiando estas 4 lineas:
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
curl_setopt($ch, CURLOPT_PROXY, 'ip:port');
curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_NTLM);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'username:password');

Por esta:
curl_setopt($ch, CURLOPT_PROXY, 'ip:port:username:password');

Lo dejo aquí por si a alguien le viene bien
Responder
#3

Muchas gracias emiceru

La verdad es que estas dos líneas nunca la había usado, las saqué de la documentación que hay en PHP.net:
Código:
curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_NTLM);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'username:password');

Posiblemente el problema es que el tipo de autenticación sea otro al CURLAUTH_NTLM, podrías probar la autenticación básica CURLAUTH_BASIC, por lo que quedarían las cuatro líneas:
Código:
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP); //sino lo especificas usa CURLPROXY_HTTP por defecto
curl_setopt($ch, CURLOPT_PROXY, 'ip:port');
curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'username:password');

Recordar que si el proxy es un socks5 en CURLOPT_PROXYTYPE deberéis poner: CURLPROXY_SOCKS5

Canal SEO en Telegram premium
Influenet - Compra/Venta de artículos patrocinados. Sonrisa
Responder
#4

Sauron controlas de Python y Proxies?
Responder
#5

(06-04-2014, 03:29 AM)powerseo escribió:  Sauron controlas de Python y Proxies?

Con Python hice unas prácticas de la Universidad con la librería OpenCV de reconomiento de imágenes, que es muy potente, pero después de esto, no he vuelto a tocar ese lenguaje, por lo que todo lo que hago como lenguaje de servidor utilizo PHP, que me resulta muy cómodo.

Canal SEO en Telegram premium
Influenet - Compra/Venta de artículos patrocinados. Sonrisa
Responder


Posibles temas similares…
Tema / Autor Respuestas Vistas Último mensaje

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)
Telegram Grupo Telegram