Los proxies en PHP se crean a través de la biblioteca cURL. cURL significa URL del cliente y es una de las extensiones más poderosas de PHP.
Denial Stenberg creó la biblioteca cURL para comunicarse entre diferentes servidores.
cURL tiene funciones que pueden enviar solicitudes a través de diferentes IP y puertos. cUrl nos permite enviar y recibir datos a través de URL.
Este tutorial muestra cómo habilitar cURL en PHP y crear un proxy usando cURL.
[Habilitar biblioteca cURL en PHP]
Antes de comenzar a crear el proxy, debemos habilitar la biblioteca cURL. La biblioteca cURL ya existe en PHP, tenemos que habilitarla.
Primero, debemos verificar si cUrl está habilitado. Crea un info.php
archivo y ejecútalo.
<?php
phpinfo();
?>
Cuando ejecute este archivo, mostrará toda la información sobre PHP. Antes de continuar, es necesario configurar PATH
variables para PHP.
Si está configurado, puede continuar. info.php
Buscar cURL en .
Si no está habilitado, vaya a la carpeta de inicio de PHP y busque php.ini
el archivo. El camino más probable es C:\php74\php.ini
.
Abra el archivo usando un editor de texto php.ini
. Busque curl y encontrará algo como esto:
;extension=php_curl.dll
O para versiones más nuevas de PHP:
;extension=curl
Retirar ahora ;
antes de extender. Guarde php.ini
el archivo y salga, reinicie el servidor que está utilizando o localhost.
extension=curl
info.php
Corre y busca de nuevo cURL support
. Ya verás:
cURL support: enabled
Esto significa que cURL está habilitado y listo. php_curl.dll
Si cURL aún no está habilitado, pruebe con la ruta absoluta después de la expansión .
extension=C:/php74/ext/php_curl.dll
[Creando un proxy usando cURL y PHP]
cURL tiene muchas palabras clave diferentes para diferentes operaciones. Veamos un ejemplo de cómo crear una solicitud de proxy para una URL determinada:
//URL you want to apply cURL proxy.
$site = 'http://google.com';
// The Proxy IP address
$proxy_ip = '138.117.84.240';
//The proxy port.
$proxy_port = '999';
//Authentication information for proxy, username and password.
$Username = 'demouser';
$Password = 'demopassword';
//Initiate cURL response
$curl_reponse = curl_init($site);
curl_setopt($curl_reponse, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_reponse, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl_reponse, CURLOPT_HTTPPROXYTUNNEL , 1);
//Setting the IP address for proxy.
curl_setopt($curl_reponse, CURLOPT_PROXY, $proxy_ip);
//Setting the port for proxy.
curl_setopt($curl_reponse, CURLOPT_PROXYPORT, $proxy_port);
//Specifying the authentication information.
curl_setopt($curl_reponse, CURLOPT_PROXYUSERPWD, "$Username:$Password");
//Define the proxy server type, it is not neccessary, incase there is proxy connection aborted error.
//The defaults type is CURLPROXY_HTTP, and the other options are CURLPROXY_SOCKS4, CURLPROXY_SOCKS4A, CURLPROXY_SOCKS5,and CURLPROXY_SOCKS5_HOSTNAME.
curl_setopt($curl_reponse, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);
//Execute the proxy request.
$output = curl_exec($curl_reponse);
//All the errors with number are given at this link from PHP Manual https://www.php.net/manual/en/function.curl-errno.php
//Error Number
echo curl_errno($curl_reponse).'<br/>';
// Error Info
echo curl_error($curl_reponse).'<br/>';
//Show the output, Return a cURL handle on success, and FALSE if there is an error.
echo $output;
El código anterior es google.com
la configuración que crea una solicitud de proxy para ejecutar. El código utiliza autenticación de proxy.
El proxy no necesita conectarse a una IP y un puerto determinados. Si la conexión proxy tiene éxito, devolverá verdadero o un identificador de cURL.
Si hay algún error, imprimirá el número de error y la información y devolverá falso. Consulte el resultado de uno de los errores más comunes:
28
Failed to connect to 138.117.84.240 port 999: Timed out