crear_web_proxy_http_en_un_minuto_phproxy
Crear página web que actúa como proxy HTTP en menos de un minuto con PHPproxy
PHProxy es un viejo proxy HTTP vía web escrito en PHP en 2007, su funcionalidad es la de esquivar posibles bloqueos de acceso a sitios web. Si el servidor donde está alojado PHPproxy puede acceder a un determinado recurso http, el cliente que lo utilice también.
PHProxy: http://sourceforge.net/projects/poxy/
Para su puesta en marcha se necesita como única dependencia el paquete php-cli. Se recomienda mirar las opciones de configuración de PHPproxy para adaptarlo a las necesidades.
wget http://switch.dl.sourceforge.net/project/poxy/PHProxy/0.5%20beta%202/poxy-0.5b2.zip unzip poxy-0.5b2.zip php -S 0.0.0.0:80
Proteger el acceso a PHProxy mediante autenticación HTTP Digest
Agregar justo después de “error_reporting(E_ALL);” el siguiente código (Cambiar usuario / password).
// function to parse the http auth header function http_digest_parse($txt) { // proteger contra datos perdidos $needed_parts = array('nonce'=>1, 'nc'=>1, 'cnonce'=>1, 'qop'=>1, 'username'=>1, 'uri'=>1, 'response'=>1); $data = array(); $keys = implode('|', array_keys($needed_parts)); preg_match_all('@(' . $keys . ')=(?:([\'"])([^\2]+?)\2|([^\s,]+))@', $txt, $matches, PREG_SET_ORDER); foreach ($matches as $m) { $data[$m[1]] = $m[3] ? $m[3] : $m[4]; unset($needed_parts[$m[1]]); } return $needed_parts ? false : $data; } $realm = 'Área restringida'; //user => password $users = array('usuario1' => 'password1', 'usuario2' => 'password2'); if (empty($_SERVER['PHP_AUTH_DIGEST'])) { header('HTTP/1.1 401 Unauthorized'); header('WWW-Authenticate: Digest realm="'.$realm. '",qop="auth",nonce="'.uniqid().'",opaque="'.md5($realm).'"'); die('Chao!'); } // analiza la variable PHP_AUTH_DIGEST if (!($data = http_digest_parse($_SERVER['PHP_AUTH_DIGEST'])) || !isset($users[$data['username']])) die('Buen intento!'); // Generando una respuesta valida $A1 = md5($data['username'] . ':' . $realm . ':' . $users[$data['username']]); $A2 = md5($_SERVER['REQUEST_METHOD'].':'.$data['uri']); $valid_response = md5($A1.':'.$data['nonce'].':'.$data['nc'].':'.$data['cnonce'].':'.$data['qop'].':'.$A2); if ($data['response'] != $valid_response) die('Datos Erróneos!');
crear_web_proxy_http_en_un_minuto_phproxy.txt · Last modified: 2020/12/25 22:57 by 127.0.0.1