pruebaOmar.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. <?php
  2. ob_start(); // Limpia el buffer por errores de salida
  3. // Permite un mayor tiempo de respuesta del socket
  4. ini_set('memory_limit', '-1');
  5. ini_set('display_errors', 1);
  6. ini_set('display_startup_errors', 1);
  7. error_reporting(E_ALL);
  8. $url = 'https://easyvent.solerpalau.com/series-info/595/192';
  9. /*$ch = curl_init();
  10. curl_setopt($ch, CURLOPT_URL, $url); // Dirección URL a capturar
  11. curl_setopt($ch, CURLOPT_PROXY, $arrProxies[$i]['proxyAndPuerto']); // El proxy HTTP para enviar peticiones a través de tunel.
  12. curl_setopt($ch, CURLOPT_PROXYTYPE, $arrProxies[$i]['tipoProxy']); // Puede ser CURLPROXY_HTTP (por defecto), CURLPROXY_SOCKS4, CURLPROXY_SOCKS5, CURLPROXY_SOCKS4A o CURLPROXY_SOCKS5_HOSTNAME
  13. curl_setopt($ch, CURLOPT_TIMEOUT, 60); // Número máximo de segundos permitido para ejectuar funciones cURL
  14. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60); // Número de segundos a esperar cuando se está intentado conectar. Use 0 para esperar indefinidamente
  15. 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)
  16. //curl_setopt($ch, CURLOPT_MAXREDIRS, 10); // Número máximo de redirecciones HTTP a seguir. Use esta opción con CURLOPT_FOLLOWLOCATION
  17. 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
  18. $data = curl_exec($ch); // Ejecuta la sesión cURL que se le pasa como parámetro
  19. $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
  20. echo $arrProxies[$i]['proxyAndPuerto'].'<br>';
  21. echo $httpcode.'<br>';
  22. //echo $data;
  23. //echo curl_error($ch);
  24. curl_close($ch); // Cierra la sesión cURL
  25. exit;*/
  26. extraerTabla($url);
  27. function extraerTabla($url){
  28. $exito = false;
  29. $errorDescripcion = '';
  30. // Los servidores se obtuvieron de la página https://www.proxyscan.io/ ** Todos son de México
  31. $arrProxies = array(); // Lista de Proxies para realizar las peticiones
  32. //$arrProxies[0]['proxyAndPuerto'] = '187.188.168.57:9991'; // No funciona (puede servir para realizar pruebas del ciclo)
  33. //$arrProxies[0]['tipoProxy'] = CURLPROXY_SOCKS4;
  34. $arrProxies[0]['proxyAndPuerto'] = '190.9.54.24:5678';
  35. $arrProxies[0]['tipoProxy'] = CURLPROXY_SOCKS4;
  36. /*$arrProxies[1]['proxyAndPuerto'] = '187.216.90.46:5678';
  37. $arrProxies[1]['tipoProxy'] = CURLPROXY_SOCKS4;
  38. $arrProxies[2]['proxyAndPuerto'] = '201.148.28.17:5678';
  39. $arrProxies[2]['tipoProxy'] = CURLPROXY_SOCKS4;
  40. $arrProxies[3]['proxyAndPuerto'] = '187.189.81.246:4153';
  41. $arrProxies[3]['tipoProxy'] = CURLPROXY_SOCKS4;
  42. $arrProxies[4]['proxyAndPuerto'] = '187.217.39.66:5678';
  43. $arrProxies[4]['tipoProxy'] = CURLPROXY_SOCKS4;
  44. $arrProxies[5]['proxyAndPuerto'] = '177.242.150.6:5678';
  45. $arrProxies[5]['tipoProxy'] = CURLPROXY_SOCKS4;*/
  46. for ($i = 0; $i <= 0; $i++) {
  47. $ch = curl_init();
  48. curl_setopt($ch, CURLOPT_URL, $url); // Dirección URL a capturar
  49. curl_setopt($ch, CURLOPT_PROXY, $arrProxies[$i]['proxyAndPuerto']); // El proxy HTTP para enviar peticiones a través de tunel.
  50. curl_setopt($ch, CURLOPT_PROXYTYPE, $arrProxies[$i]['tipoProxy']); // Puede ser CURLPROXY_HTTP (por defecto), CURLPROXY_SOCKS4, CURLPROXY_SOCKS5, CURLPROXY_SOCKS4A o CURLPROXY_SOCKS5_HOSTNAME
  51. curl_setopt($ch, CURLOPT_TIMEOUT, 60); // Número máximo de segundos permitido para ejectuar funciones cURL
  52. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60); // Número de segundos a esperar cuando se está intentado conectar. Use 0 para esperar indefinidamente
  53. 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)
  54. //curl_setopt($ch, CURLOPT_MAXREDIRS, 10); // Número máximo de redirecciones HTTP a seguir. Use esta opción con CURLOPT_FOLLOWLOCATION
  55. 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
  56. $data = curl_exec($ch); // Ejecuta la sesión cURL que se le pasa como parámetro
  57. $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
  58. curl_close($ch); // Cierra la sesión cURL
  59. if (($httpcode >= 200) && ($httpcode < 300)) {
  60. $contenido = $data;
  61. if ($contenido) {
  62. $tablaHTML = "<div class='section section-grey'>";
  63. $seccionGris = strstr($contenido, "section section-grey");
  64. $removeFooter = strstr($seccionGris, "section cookie-warning", true);
  65. $tablaHTML .= ("<div class=\" " . $removeFooter . "\" >");
  66. $tablaHTML .= "</div>";
  67. $exito = true;
  68. echo $tablaHTML;
  69. } else {
  70. $exito = false;
  71. }
  72. goto fin_extraerTabla;
  73. }else{
  74. $exito = false;
  75. }
  76. } // Fin del ciclo
  77. fin_extraerTabla :
  78. if($exito == false){
  79. if(empty($errorDescripcion)){
  80. echo "<p style='text-align: center;'>Los servidores proxy dejarón de funcionar. Por favor contacte con al administrador del sistema.</p>";
  81. }else{
  82. echo $errorDescripcion;
  83. }
  84. }
  85. }
  86. function extraerTabla_BKP($url)
  87. {
  88. /*echo $url.'<br><br>';
  89. exit;*/
  90. $exito = false;
  91. //for ($i = 0; $i <= 5; $i++) {
  92. $i = 1;
  93. $arrProxies[0] = '187.188.168.57:9991';
  94. $arrProxies[1] = '148.217.94.54:3128';
  95. $arrProxies[2] = '187.189.96.94:9991';
  96. $arrProxies[3] = '187.162.11.94:3128';
  97. $arrProxies[4] = '177.234.0.218:43173';
  98. $arrProxies[5] = '187.178.238.177:3629';
  99. $proxy = $arrProxies[$i];
  100. $proxy = explode(":", $proxy);
  101. $ch = curl_init($proxy[0]);
  102. curl_setopt($ch,CURLOPT_URL,$url);
  103. curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0');
  104. curl_setopt($ch,CURLOPT_HTTPHEADER,
  105. array(
  106. 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
  107. //'Accept-Encoding: gzip, deflate, br',
  108. 'Accept-Language: es-MX,es;q=0.8,en-US;q=0.5,en;q=0.3',
  109. 'Connection: keep-alive',
  110. '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'
  111. )
  112. );
  113. curl_setopt($ch,CURLOPT_TIMEOUT, 10);
  114. curl_setopt($ch,CURLOPT_FOLLOWLOCATION, 1);
  115. curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
  116. /*curl_setopt($ch, CURLOPT_TIMEOUT, 10);
  117. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
  118. curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // Configura cURL para devolver el resultado como cadena
  119. 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*/
  120. $data = curl_exec($ch); // Establece una sesión cURL y asigna la información a la variable $data
  121. $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  122. if ($httpcode >= 200 && $httpcode < 300) {
  123. /*$proxyN = 'tcp://' . $arrProxies[$i];
  124. $context = array(
  125. 'https' => array(
  126. 'proxy' => $proxyN,
  127. 'request_fulluri' => True,
  128. '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'
  129. ),
  130. );
  131. $context = stream_context_create($context);
  132. $contenido = file_get_contents($url, false, $context);*/
  133. $contenido = $data;
  134. if ($contenido) {
  135. /*echo $contenido;
  136. exit;*/
  137. $tablaHTML = "<div class='section section-grey'>";
  138. $seccionGris = strstr($contenido, "section section-grey");
  139. $removeFooter = strstr($seccionGris, "section cookie-warning", true);
  140. $tablaHTML .= ("<div class=\" " . $removeFooter . "\" >");
  141. $tablaHTML .= "</div>";
  142. $exito = true;
  143. echo $tablaHTML;
  144. } else {
  145. $exito = false;
  146. }
  147. goto fin_extraerTabla;
  148. }else{
  149. $exito = false;
  150. }
  151. //}
  152. fin_extraerTabla :
  153. /*if($exito == false){
  154. echo "<p style='text-align: center;'>El contenido no fue cargado correctamente, recargue la página.</p>";
  155. }*/
  156. curl_close($ch);
  157. }