1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
<?php
// Secret key to use this script
$secret = '';
// HTTP authorization (USERNAME:PASSWORD Base64 encoded)
$authorization = '';
if (isset($_GET['secret']) && $_GET['secret'] == $secret && isset($_GET['url']) && !empty($_GET['url'])) {
$request_headers = array('Authorization: Basic '.$authorization);
$url = $_GET['url'];
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HTTPHEADER, $request_headers);
$content = curl_exec($curl);
$contenttype = curl_getinfo($curl, CURLINFO_CONTENT_TYPE);
curl_close($curl);
if (str_starts_with($contenttype, 'text/html')) {
$proxyurl = substr($url, 0, strrpos($url, '/') + 1);
$scripturl = 'https://'.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'].'?secret='.$secret.'&';
$content = preg_replace('#href="(?!https)(.+)"#i', 'href="'.$scripturl.'url='.$proxyurl.'$1"', $content);
$content = preg_replace('#src="(?!https)(.+)"#i', 'src="'.$scripturl.'url='.$proxyurl.'$1"', $content);
}
header('Content-Type: '.$contenttype);
echo $content;
} else {
throw new Exception('Insufficient request');
}
?>
|