Advertisement
IWBH_01

php_proxy2

Nov 24th, 2018
313
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.95 KB | None | 0 0
  1. <?php
  2. function gurl($es,$bf,$af){$es="\xFF".$es;$sp1=strpos($es,$bf);
  3. $fe_s=substr($es,$sp1+strlen($bf));$sp2=strpos($fe_s,$af);
  4. if($sp1&&$sp2)return substr($fe_s,0,$sp2);else return '';
  5. }
  6.  
  7. function gurli($es,$bf,$af){$es="\xFF".$es;
  8. $sp1=stripos($es,$bf);$fe_s=substr($es,$sp1+strlen($bf));
  9. $sp2=stripos($fe_s,$af);
  10. if($sp1&&$sp2)return substr($fe_s,0,$sp2);else return '';
  11. }
  12.  
  13. function cget($lvn){if(isset($_GET[$lvn]))return $_GET[$lvn];else return '';}
  14.  
  15. function i_exp($d1){
  16.     return strtotime($d1)<(time()-10);
  17. }
  18.  
  19. function couki($htp1){
  20.     global $cukie;
  21.     $cukis0=preg_split("/Set-Cookie: /i", $htp1[0]);
  22.  $clen=count($cukis0);
  23.  $r1=1;
  24.  while($r1 < $clen){
  25.      $buf=$cukis0[$r1];
  26.      $buf=substr($buf, 0, strpos($buf, "\r\n"));
  27.      $Exp=gurli($buf, "Expires=", ";");
  28.      if((!strlen($Exp))||(!i_exp($Exp))){
  29.      $domain=gurli($buf, "Domain=", ";");
  30.      if(!strlen($domain))
  31.      $domain=gurl($htp1[2], "://", "/");
  32.      $cukie[$domain][substr($buf,0,strpos($buf, "="))]=[gurl($buf, "=", ";"), gurli($buf, "Path=", ";"), $Exp];
  33.      }
  34.      $r1++;
  35.  }
  36. }
  37.  
  38. function if_cuk($loc0){
  39.     global $cukie;
  40.     $vl0=gurl($loc0, "://", "/");
  41.     $cke1="";
  42. $ca_01=[];
  43. if(isset($cukie[$vl0]))
  44. $ca_01=$cukie[$vl0];
  45. $hoxt=".".substr($vl0, strpos($vl0, ".")+1);
  46. if(isset($cukie[$hoxt]))
  47. $ca_01=array_merge($ca_01, ($cukie[$hoxt]));
  48.  
  49. foreach($ca_01 as $name => $value){
  50.     $iexp=i_exp($value[2]);
  51.     if((!$iexp || $value[2]=="") && (strpos($loc0, $vl0.$value[1]) || strlen($value[1]) < 2)){
  52.     if(strlen($cke1))
  53.     $cke1.="; ";
  54.     $cke1.=$name."=".$value[0];
  55.     }elseif($iexp){
  56.         if(isset($cukie[$vl0][$name]))
  57.         unset($cukie[$vl0][$name]);
  58.         else
  59.         unset($cukie[$hoxt][$name]);
  60.     }
  61. }
  62.     return $cke1;
  63. }
  64.  
  65. function bgn($a,$s){return strpos("\xFF".$a,$s)==1;}
  66.  
  67. $SVR=$_SERVER;
  68. $uri=$SVR['REQUEST_URI'];
  69. if((!($e_=strpos($uri,'.php/')))||(!strlen($url2=substr($uri,$e_+5))))exit('No url found.');
  70. $yce=!cget("nc");
  71. $hdrs=["host: "+gurl($url2,"://","/")];
  72. $A='accept';
  73. $phdr=" ,user-agent,origin,referer,$A,$A-encoding,$A-language,host,";
  74. $nope=' ,host,';
  75. header('Access-Control-Allow-Origin: *');
  76. if(isset($SVR['HTTP_X_NOPE']))$nope.=strtolower($SVR['HTTP_X_NOPE']).',';
  77.  
  78. foreach($SVR as $N=>$v){
  79.     if(substr($N,0,5)=="HTTP_"){ $n=str_replace("_","-",strtolower(substr($N,5)));
  80.         if(substr($n,0,4)=="x-a-"&&strlen($n)>4) $hdrs[substr($n,4)]=$v;
  81.         elseif(!(isset($hdrs[$n])||strpos($nope,",$n,")||($n=="x-nope"))) $hdrs[$n]=$v;
  82.     }
  83. }
  84.  
  85. if(!($bdy = file_get_contents('php://input')))$bdy='';
  86. header('X-rbdy: '.($bl=strlen($bdy)));
  87.  
  88. if($bl&&bgn($bdy,'HL: ')){
  89.  $HL=substr($bdy,4,$fle=strpos($bdy,"\r\n"))*1;
  90.  $hds=substr($bdy,$fle+2,$HL);
  91.  if(strlen($hds)){$ha0=explode("\r\n",$hds);
  92.   foreach($ha0 as $H){
  93.    if($cp=strpos($H,":")){$hn=substr($H,0,$cp);
  94.     array_push($hdrs,$H);
  95.    }
  96.   }
  97.  }
  98.  $bdy=substr($bdy,$fle+2+$HL);
  99.  $bl=strlen($bdy);
  100. }
  101.  
  102. $rdr=0;$fhed='';$rMeh=$SVR['REQUEST_METHOD'];
  103. BgnC:
  104. $g1=curl_init();
  105. curl_setopt($g1,CURLOPT_URL,$url2);
  106. curl_setopt($g1,CURLOPT_SSL_VERIFYPEER,!1);
  107. curl_setopt($g1,CURLOPT_RETURNTRANSFER,!0);
  108. curl_setopt($g1,CURLOPT_VERBOSE,!0);
  109. if($rMeh=="GET") curl_setopt($g1,CURLOPT_HTTPGET,!0);
  110. elseif($rMeh!="POST") curl_setopt($g1, CURLOPT_CUSTOMREQUEST, $rMeh);
  111. if($bl) curl_setopt($g1, CURLOPT_POSTFIELDS, $bdy);
  112. curl_setopt($g1, CURLOPT_COOKIESESSION, !0);
  113. curl_setopt($g1, CURLOPT_BINARYTRANSFER, !0);
  114. curl_setopt($g1, CURLOPT_HEADER, !0);
  115. if($yce){if($cuk1=if_cuk($url2)) if(isset($hdrs["cookie"])) $hdrs["cookie"].="; ".$cuk1; else $hdrs["cookie"]=$cuk1;}
  116. $hdrs_=[]; foreach($hdrs as $n_=>$v_) array_push($hdrs_,$n_.": ".$v_);
  117. curl_setopt($g1, CURLOPT_HTTPHEADER, $hdrs_);
  118. curl_setopt($g1,CURLOPT_ENCODING,"gzip");
  119. $rdat1=curl_exec($g1);
  120. $hl1=curl_getinfo($g1, CURLINFO_HEADER_SIZE);
  121. curl_close($g1);
  122. $rhed1=substr($rdat1, 0, $hl1);
  123. $b0dy=substr($rdat1, $hl1);
  124. if($yce)couki([$rhed1,0,$url2."/"]);
  125. $bdy="";
  126. $rMeh="GET";
  127. $fhed.=$rMeh." ".$url2."\r\n".$rhed1;
  128.  
  129. if((!cget("df"))&&strlen($p=gurli($rhed1,"location: ","\r\n"))){
  130.   $rdr++;
  131.   if($rdr<5){
  132.   $rci=strpos($r=$url2,"://");$ptc=substr($r,0,$rci);$afptc=substr($r,$rci+3);if($sp_=strpos($afptc,"/"))$host=substr($afptc,0,$sp_);else $host=$afptc;$domn=$ptc."://".$host;$qi=strpos($r,"?");
  133.   if(bgn($p,"http://")||bgn($p,"https://")) $res=$p;
  134.   elseif(bgn($p,"?")) $res=(($qi+1)?substr($r,0,$qi):$r).$p;
  135.   elseif($p[0]=="/") $res=$domn.$p;
  136.   elseif(bgn($p,"://")) $res=$ptc.$p;
  137.   else{ if($r[strlen($r)-1]!="/") $r=substr($r,0,strrpos($r,"/")+1);
  138.   while(bgn($p,"../")){if($r[strlen($r)-1]=="/")$r=substr($r,0,strlen($r)-2);$p=substr($p,3);if(strlen($r)>(strlen($domn)+3))$r=substr($r,0,strrpos($r,"/")+1);}
  139.      $res=$r.$p;
  140.   }
  141.   $hdrs2=[];
  142.   header("X-rdr-".$rdr.": ".($url2=$res));
  143.   foreach($hdrs as $_n=>$_v){if(strpos($phdr,",".$_n.","))$hdrs2[$_n]=$_v;}
  144.   $hdrs=$hdrs2;
  145.   goto BgnC;
  146.   }else exit("Too many rederects.\r\n".$fhed);
  147. }
  148.  
  149. echo("HL: ".strlen($fhed)."\r\n".$fhed.$b0dy);
  150. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement