Como utilizar Proxy en PHP usando la librería Curl
Iniciado por Sauron · 19 mar 2014 · 4 respuestas · 10.491 visitas
Sauron Si quieres saber como scrapear utilizando PHP te recomiendo este hilo:
http://foroblackhat.com/hilo-scrapear-utilizando-php-nativo-y-la-librer%C3%ADa-curl
Ahora vamos a tratar como Scrapear empleando Proxy, que es dar un pasito más en el scripting del Blackhatero :)
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 ":" 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.phpemiceru 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 bienSauron 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:
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:
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_SOCKS5Right Now @Sauron controlas de Python y Proxies?Sauron 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.
Este hilo pertenece al archivo del foro y ya no admite respuestas.
Otros hilos de esta sección
- Social Locker simple en HTML y JavaScriptSauron · 16 jun 201420 respuestas · 47.307 visitasÚltimo mensaje: 7 dic 2018
- Script para postear en diferentes grupos de Facebookrodrigol · 6 jun 201418 respuestas · 43.485 visitasÚltimo mensaje: 7 may 2018
- Scrapear con phytoncarlosse · 3 may 201411 respuestas · 24.557 visitasÚltimo mensaje: 19 mar 2017
- Desofuscar código JavaScriptSauron · 7 ago 20147 respuestas · 18.061 visitasÚltimo mensaje: 12 oct 2016
- Redirección .htaccess de un dominiowrongchris · 15 mar 20174 respuestas · 15.565 visitasÚltimo mensaje: 29 nov 2017
- Scrapear utilizando PHP nativo y la librería CurlSauron · 19 mar 20147 respuestas · 15.162 visitasÚltimo mensaje: 9 jul 2015
- Ayuda script para forzar a ver anuncio a los usuariosdobrick · 26 feb 20185 respuestas · 15.034 visitasÚltimo mensaje: 12 may 2019
- Duda para desarrolladores webharmonica · 8 may 20158 respuestas · 14.252 visitasÚltimo mensaje: 20 jul 2015

