トップページ⇒php
24コメント19KB

PHPでProxy

■ このスレッドは過去ログ倉庫に格納されています
0001 02/01/16 00:56ID:/JfbhdTB
PHPでproxyを作ろうと思います。
>>2まで出来たけど、問題発見
 ・Getできない。
 ・リダイレクトされるページが開けない
どーしたらいんでしょうか?
0002名無しさん@お腹いっぱい。02/01/16 01:04ID:???
なぜPHPで?
0003名無しさん@お腹いっぱい。02/01/16 01:04ID:???
2
0004名無しさん@お腹いっぱい。02/01/16 01:28ID:???
>2
そこにPHPがあるからなんじゃないの?
0005  02/01/16 01:34ID:/JfbhdTB
<?
if(isset($u))
{
//---------------------初期設定------------------
$source_url="http://192.168.0.2/b.php?u=";

//---------------------URLをパース---------------
$url = parse_url($u);
$host = $url["host"];
$path = $url["path"];
if($path == "") $path = "/";
$query = $url["query"];
if($query != "") $path = "$path?$query";

//---------------------データ取得設定------------
$ch = curl_init($u);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "phpProxy");
curl_setopt($ch, CURLOPT_REFERER,"http://www.php.net/");

//---------------------POST送信に対応------------
if(strlen($post_data)!=0)
{
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
}
0006  02/01/16 01:34ID:/JfbhdTB
//---------------------Cookiesに対応------------
if(strlen($cookies_data)!=0)
{
curl_setopt($ch, CURLOPT_COOKIE, $cookies_data);
}

//---------------------データ取得終了------------
$tmp = curl_exec ($ch);
curl_close ($ch);

//---------------------URL置換-------------------
$pat = array("/(<[^>]*\bhref\s*=\s*['\"]?)([^\s\"'>]*)/sie",
"/(<[^>]*\bsrc\s*=\s*['\"]?)([^\s\"'>]*)/sie",
"/(<[^>]*\bbackground\s*=\s*['\"]?)([^\s\"'>]*)/sie",
"/(<[^>]*\baction\s*=\s*['\"]?)([^\s\"'>]*)/sie");
$rep = array("StripSlashes('\\1').'$source_url'.fullurl('\\2')",
"StripSlashes('\\1').fullurl('\\2')",
"StripSlashes('\\1').fullurl('\\2')",
"StripSlashes('\\1').'$source_url'.fullurl('\\2')");
echo preg_replace($pat, $rep, $tmp);

}
else
{
0007  02/01/16 01:35ID:/JfbhdTB
<html>
<head>
<title>xy</title>
</head>
<body>
<form action="<?php echo $PHP_SELF;?>" method="GET">
URL : <input type="text" size="60" name="u"><br>
<input type="submit" value=" Start ">
</form>
</body>
</html>
<?
}

function fullurl($uri)
{
global $host,$path;
$home = substr($path, 0, strrpos($path,"/"));
if(ereg("^http://",$uri)||ereg("^#",$uri)){
return $uri;
}elseif(ereg("^/.*",$uri)){
return "http://".$host.$uri;
}elseif(ereg("^(\./.*)$",$uri)){
return ereg_replace("^(\./)","http://".$host.$home."/",$uri);
}elseif(ereg("^(\.\./.*)$",$uri)){
$updir = substr($home, 0, strrpos($home,"/")+1);
return ereg_replace("^(\.\./)","http://".$host.$updir,$uri);
}else{
return "http://".$host.$home."/".$uri;
}
}
?>
0008  02/01/16 02:13ID:/JfbhdTB
というわけで、後、誰か、PHPわかる人、助けてくれ〜
ちなみに>>2-4は、どっか、きえてくれ〜
■ このスレッドは過去ログ倉庫に格納されています