El último código de respuesta. A partir de PHP 5.5.0 y cURL 7.10.8, este es un alias heredado de CURLINFO_RESPONSE_CODE echo $arrProxies[$i]['proxyAndPuerto'].'
'; echo $httpcode.'
'; //echo $data; //echo curl_error($ch); curl_close($ch); // Cierra la sesión cURL exit;*/ extraerTabla($url); function extraerTabla($url){ $exito = false; $errorDescripcion = ''; // Los servidores se obtuvieron de la página https://www.proxyscan.io/ ** Todos son de México $arrProxies = array(); // Lista de Proxies para realizar las peticiones //$arrProxies[0]['proxyAndPuerto'] = '187.188.168.57:9991'; // No funciona (puede servir para realizar pruebas del ciclo) //$arrProxies[0]['tipoProxy'] = CURLPROXY_SOCKS4; $arrProxies[0]['proxyAndPuerto'] = '190.9.54.24:5678'; $arrProxies[0]['tipoProxy'] = CURLPROXY_SOCKS4; /*$arrProxies[1]['proxyAndPuerto'] = '187.216.90.46:5678'; $arrProxies[1]['tipoProxy'] = CURLPROXY_SOCKS4; $arrProxies[2]['proxyAndPuerto'] = '201.148.28.17:5678'; $arrProxies[2]['tipoProxy'] = CURLPROXY_SOCKS4; $arrProxies[3]['proxyAndPuerto'] = '187.189.81.246:4153'; $arrProxies[3]['tipoProxy'] = CURLPROXY_SOCKS4; $arrProxies[4]['proxyAndPuerto'] = '187.217.39.66:5678'; $arrProxies[4]['tipoProxy'] = CURLPROXY_SOCKS4; $arrProxies[5]['proxyAndPuerto'] = '177.242.150.6:5678'; $arrProxies[5]['tipoProxy'] = CURLPROXY_SOCKS4;*/ for ($i = 0; $i <= 0; $i++) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); // Dirección URL a capturar curl_setopt($ch, CURLOPT_PROXY, $arrProxies[$i]['proxyAndPuerto']); // El proxy HTTP para enviar peticiones a través de tunel. curl_setopt($ch, CURLOPT_PROXYTYPE, $arrProxies[$i]['tipoProxy']); // Puede ser CURLPROXY_HTTP (por defecto), CURLPROXY_SOCKS4, CURLPROXY_SOCKS5, CURLPROXY_SOCKS4A o CURLPROXY_SOCKS5_HOSTNAME curl_setopt($ch, CURLOPT_TIMEOUT, 60); // Número máximo de segundos permitido para ejectuar funciones cURL curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60); // Número de segundos a esperar cuando se está intentado conectar. Use 0 para esperar indefinidamente curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // "true" para seguir cualquier encabezado "Location: " que el servidor envíe como parte del encabezado HTTP (observe la recursividad, PHP seguirá tantos header "Location: " como se envíen, a no ser que la opción CURLOPT_MAXREDIRS esté establecida) //curl_setopt($ch, CURLOPT_MAXREDIRS, 10); // Número máximo de redirecciones HTTP a seguir. Use esta opción con CURLOPT_FOLLOWLOCATION curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // "true" para devolver el resultado de la transferencia como string del valor de curl_exec() en lugar de mostrarlo directamente $data = curl_exec($ch); // Ejecuta la sesión cURL que se le pasa como parámetro $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE); // Obtener información sobre una transferencia específica -> El último código de respuesta. A partir de PHP 5.5.0 y cURL 7.10.8, este es un alias heredado de CURLINFO_RESPONSE_CODE curl_close($ch); // Cierra la sesión cURL if (($httpcode >= 200) && ($httpcode < 300)) { $contenido = $data; if ($contenido) { $tablaHTML = "
"; $seccionGris = strstr($contenido, "section section-grey"); $removeFooter = strstr($seccionGris, "section cookie-warning", true); $tablaHTML .= ("
"); $tablaHTML .= "
"; $exito = true; echo $tablaHTML; } else { $exito = false; } goto fin_extraerTabla; }else{ $exito = false; } } // Fin del ciclo fin_extraerTabla : if($exito == false){ if(empty($errorDescripcion)){ echo "

Los servidores proxy dejarón de funcionar. Por favor contacte con al administrador del sistema.

"; }else{ echo $errorDescripcion; } } } function extraerTabla_BKP($url) { /*echo $url.'

'; exit;*/ $exito = false; //for ($i = 0; $i <= 5; $i++) { $i = 1; $arrProxies[0] = '187.188.168.57:9991'; $arrProxies[1] = '148.217.94.54:3128'; $arrProxies[2] = '187.189.96.94:9991'; $arrProxies[3] = '187.162.11.94:3128'; $arrProxies[4] = '177.234.0.218:43173'; $arrProxies[5] = '187.178.238.177:3629'; $proxy = $arrProxies[$i]; $proxy = explode(":", $proxy); $ch = curl_init($proxy[0]); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0'); curl_setopt($ch,CURLOPT_HTTPHEADER, array( 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8', //'Accept-Encoding: gzip, deflate, br', 'Accept-Language: es-MX,es;q=0.8,en-US;q=0.5,en;q=0.3', 'Connection: keep-alive', 'Cookie: _ga=GA1.2.821969284.1629478795; _hjid=3cb7741d-c042-4afc-929e-4f5118af6b39; _fbp=fb.1.1629478795375.600180933; __hstc=103515359.e581ce363a680b3a9efc57ba8ca11a0c.1629478795538.1629478795538.1629478795538.1; hubspotutk=e581ce363a680b3a9efc57ba8ca11a0c; __hssrc=1; _gcl_au=1.1.442740855.1629478796; ASP.NET_SessionId=2sv4h4h0b0yc4s5xullfgkt1; easyDuct_v2=true; __utma=170610228.821969284.1629478795.1629748529.1629752991.6; __utmc=170610228; __utmz=170610228.1629732566.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmb=170610228.3.10.1629752991; __utmt=1' ) ); curl_setopt($ch,CURLOPT_TIMEOUT, 10); curl_setopt($ch,CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1); /*curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // Configura cURL para devolver el resultado como cadena curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Configura cURL para que no verifique el peer del certificado dado que nuestra URL utiliza el protocolo HTTPS*/ $data = curl_exec($ch); // Establece una sesión cURL y asigna la información a la variable $data $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE); if ($httpcode >= 200 && $httpcode < 300) { /*$proxyN = 'tcp://' . $arrProxies[$i]; $context = array( 'https' => array( 'proxy' => $proxyN, 'request_fulluri' => True, 'header'=> 'Cookie: _ga=GA1.2.821969284.1629478795; _hjid=3cb7741d-c042-4afc-929e-4f5118af6b39; _fbp=fb.1.1629478795375.600180933; __hstc=103515359.e581ce363a680b3a9efc57ba8ca11a0c.1629478795538.1629478795538.1629478795538.1; hubspotutk=e581ce363a680b3a9efc57ba8ca11a0c; __hssrc=1; _gcl_au=1.1.442740855.1629478796; ASP.NET_SessionId=2sv4h4h0b0yc4s5xullfgkt1; easyDuct_v2=true; __utma=170610228.821969284.1629478795.1629748529.1629752991.6; __utmc=170610228; __utmz=170610228.1629732566.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmb=170610228.3.10.1629752991; __utmt=1' ), ); $context = stream_context_create($context); $contenido = file_get_contents($url, false, $context);*/ $contenido = $data; if ($contenido) { /*echo $contenido; exit;*/ $tablaHTML = "
"; $seccionGris = strstr($contenido, "section section-grey"); $removeFooter = strstr($seccionGris, "section cookie-warning", true); $tablaHTML .= ("
"); $tablaHTML .= "
"; $exito = true; echo $tablaHTML; } else { $exito = false; } goto fin_extraerTabla; }else{ $exito = false; } //} fin_extraerTabla : /*if($exito == false){ echo "

El contenido no fue cargado correctamente, recargue la página.

"; }*/ curl_close($ch); }