다음과 같은 많은 제한 사항이있는 프록시가 있습니다. YouTube, Facebook 및 기타 웹 사이트에 액세스 할 수없는 회사 정책입니다. 프록시가 PHP에서 file_get_contents를 사용하여 액세스를 거부하지 않는 이유를 이해하십시오.
그러나 PHP의 코드를 테스트
는 나는이를 사용하는 사이트에 액세스 할 수 있다는 것을 발견 :<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Web Proxy</title>
</head>
<body>
<div style="text-align:center;">
<form method="GET" action="<?=$_SERVER['REQUEST_URI']?>">
<input type="url" name="url" placeholder="Type URL of site"/><input type="submit" Value="Load url" />
</form>
</div>
<hr/>
<?php
$url = $_GET['url'];
if (!empty($url))
{
// check we're only getting files served by a website (i.e. not ../../../passwords.txt from this server etc.)
if(preg_match('/^https?:/i', $url))
{
$contents = file_get_contents($url);
if($contents === FALSE)
{
echo "<h2>Sorry <pre>{$url}</pre> cannot be read</h2>\n";
}
//display contents of url
else
{ ?>
<?=$contents?>
<script>for (var i=0; i<document.links.length; i++) document.links[i].href="<?=$_SERVER['PHP_SELF']?>?url="+document.links[i].href;</script>
<?php }
}
else
{
echo "<h2><pre>$url</pre> is an invalid URL</h2>\n";
}
}
?>
</body>
</html>
이 코드는 프록시 정책을 무시하고 어떤 사이트를 처리 할 수있는 방법을 난 그냥 싶어 이해? 제한없이 모든 것을 액세스 할 수 있습니다. 누군가가 나에게 "뒤에서"라는 개념을 설명 할 수 있습니까?
어디에서이 코드를 실행하고 있습니까? 브라우저에서 프록시가 실행되었다고해서 브라우저가 아니거나 프록시 요구 사항이 적용되는 곳에서 실행될 수 없다는 것을 의미하지는 않습니다. –
글쎄,이 코드는 다른 브라우저 (youtube, facebook ...)를 테스트 할 때 사용하는 것과 동일한 브라우저 인 브라우저 (google chrome)에서 실행 중이다. – Shelly
아니요. 크롬을 사용하여 웹 서버의 웹 페이지에 액세스하고 있습니다. PHP 코드가 해당 서버에서 실행 중입니다. –