Не могу свернуться на страницу PHP с переменными $ _SERVER

Немного запутался по этому поводу. Попытка найти способ обнаружения прокси и их тип. Не уверен, есть ли какие-то ограничения, нужно ли включить какую-либо опцию или что.

Вот скрипт php, загруженный на один из моих живых сайтов

<html lang="en">
<head>
<meta charset="utf-8">

<title></title>
<meta name="description">
<meta name="author">

<link rel="stylesheet" href="css/styles.css?v=1.0">

</head>
<body>
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
set_time_limit(6000);

function get_ip()
{
if ($_SERVER)
{
if ($_SERVER['HTTP_X_FORWARDED_FOR']) $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
elseif ($_SERVER['HTTP_CLIENT_IP']) $ip = $_SERVER['HTTP_CLIENT_IP'];
else $ip = $_SERVER['REMOTE_ADDR'];
}
else
{
if (getenv('HTTP_X_FORWARDED_FOR')) $ip = getenv('HTTP_X_FORWARDED_FOR');
elseif (getenv('HTTP_CLIENT_IP')) $ip = getenv('HTTP_CLIENT_IP');
else $ip = getenv('REMOTE_ADDR');
}

return $ip;
}

function detect_proxy($myIP)
{
$scan_headers = array(
'HTTP_VIA',
'HTTP_X_FORWARDED_FOR',
'HTTP_FORWARDED_FOR',
'HTTP_X_FORWARDED',
'HTTP_FORWARDED',
'HTTP_CLIENT_IP',
'HTTP_FORWARDED_FOR_IP',
'VIA',
'X_FORWARDED_FOR',
'FORWARDED_FOR',
'X_FORWARDED',
'FORWARDED',
'CLIENT_IP',
'FORWARDED_FOR_IP',
'HTTP_PROXY_CONNECTION'
);
$flagProxy = false;
$libProxy = 'No';
foreach($scan_headers as $i) {
if ($_SERVER[$i]) { $flagProxy = true; }
if (in_array($_SERVER['REMOTE_PORT'], array(
8080,
80,
6588,
8000,
3128,
553,
554) || @fsockopen($_SERVER['REMOTE_ADDR'], 80, $errno, $errstr, 30)))
{ $flagProxy = true; }

if ($flagProxy == true && isset($_SERVER['REMOTE_ADDR']) && !empty($_SERVER['REMOTE_ADDR'])) {

// HTTP_X_FORWARDED_FOR = yourIP
if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && !empty($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] == $myIP) { $libProxy = 'Transparent'; }

elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && !empty($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] == $_SERVER['REMOTE_ADDR']) { $libProxy = 'Simple';

elseif ( isset($_SERVER['HTTP_X_FORWARDED_FOR']) && !empty($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] != $_SERVER['REMOTE_ADDR'] ) { $libProxy = 'Distorting';

elseif ( $_SERVER['HTTP_X_FORWARDED_FOR'] == '' && $_SERVER['HTTP_CLIENT_IP'] == '' && !empty($_SERVER['HTTP_VIA']) ) { $libProxy = 'Anonymous';
else { $libProxy = 'High'; }
}
return $libProxy;
}

$ip = get_ip();
echo 'Proxy Server Detection<br />';
echo '=================<br /><br />';
$typeProxy = detect_proxy($ip);
echo 'Use Proxy Server : ' . $typeProxy . '<br />';
echo '<br />';
echo 'Brief IP Information' . '<br />';
echo '--------------------' . '<br />';
echo 'Your IP : ' . $ip . '<br />';
echo 'Language : ' . $_SERVER['HTTP_ACCEPT_LANGUAGE'] . '<br />';
echo '<br />';
echo 'Detail IP Information' . '<br />';
echo '---------------------' . '<br />';
echo 'HTTP_ACCEPT : ' . $_SERVER['HTTP_ACCEPT'] . '<br />';
echo 'HTTP_ACCEPT_ENCODING : ' . $_SERVER['HTTP_ACCEPT_ENCODING'] . '<br />';
echo 'HTTP_ACCEPT_LANGUAGE : ' . $_SERVER['HTTP_ACCEPT_LANGUAGE'] . '<br />';
echo 'HTTP_ACCEPT_CHARSET : ' . $_SERVER['HTTP_ACCEPT_CHARSET'] . '<br />';
echo 'HTTP_CONNECTION : ' . $_SERVER['HTTP_CONNECTION'] . '<br />';
echo 'HTTP_HOST : ' . $_SERVER['HTTP_HOST'] . '<br />';
echo 'HTTP_KEEP_ALIVE : ' . $_SERVER['HTTP_KEEP_ALIVE'] . '<br />';
echo 'HTTP_USER_AGENT : ' . $_SERVER['HTTP_USER_AGENT'] . '<br />';
echo 'REMOTE_HOST : ' . @gethostbyaddr($_SERVER['REMOTE_ADDR']) . '<br />';
echo 'REMOTE_PORT : ' . $_SERVER['REMOTE_PORT'] . '<br />';
echo '<br />';
echo 'REMOTE_ADDR : ' . $_SERVER['REMOTE_ADDR'] . '<br />';
echo 'HTTP_VIA : ' . $_SERVER['HTTP_VIA'] . '<br />';
echo 'HTTP_X_FORWARDED_FOR : ' . $_SERVER['HTTP_X_FORWARDED_FOR'] . '<br />';
echo 'HTTP_PROXY_CONNECTION : ' . $_SERVER['HTTP_PROXY_CONNECTION'] . '<br />';
echo 'HTTP_CLIENT_IP : ' . $_SERVER['HTTP_CLIENT_IP'] . '<br />';
?>
</body>
</html>

вместе со сценарием, который я пробовал как на моем локальном хосте, так и на другом отдельном веб-сервере

$url = 'https://www.othersite.com/test.php';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_USERAGENT, $useragent);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-Language: en-US,en;q=0.9',
'Cache-Control: max-age=0',
'Connection: keep-alive'
));
$curl_page = curl_exec($curl);
$err = curl_errno ( $curl );
$errmsg = curl_error ( $curl );
$header = curl_getinfo ( $curl );
$httpCode = curl_getinfo ( $curl, CURLINFO_HTTP_CODE );
echo '------------------------';
echo '<pre>';
print_r($curl);
echo '</pre>';
echo '<pre>';
print_r($err);
echo '</pre>';
echo '<pre>';
print_r($errmsg);
echo '</pre>';
echo '<pre>';
print_r($header);
echo '</pre>';
echo '<pre>';
print_r($httpCode);
echo '</pre>';
if(curl_exec($curl) === false)
{
echo 'Curl error: ' . curl_error($curl);
}
echo '<h1>Response</h1>';
echo '<pre>';
print_r(curl_getinfo($curl));
echo '</pre>';

echo 'page:';
echo $curl_scraped_page;
var_dump($curl_scraped_page);

И это результат>

Response
Array
(
[url] => https://www.othersite.com/test.php
[content_type] => text/html; charset=UTF-8
[http_code] => 500
[header_size] => 213
[request_size] => 323
[filetime] => -1
[ssl_verify_result] => 20
[redirect_count] => 0
[total_time] => 0.14
[namelookup_time] => 1.0E-6
[connect_time] => 0.046
[pretransfer_time] => 0.093
[size_upload] => 0
[size_download] => 0
[speed_download] => 0
[speed_upload] => 0
[download_content_length] => 0
[upload_content_length] => -1
[starttransfer_time] => 0.14
[redirect_time] => 0
[redirect_url] =>
[primary_ip] => 148.72.12.211
[certinfo] => Array
(
)

[primary_port] => 443
[local_ip] => 10.150.43.44
[local_port] => 51212
)
page:
C:\wamp64\www\testext.php:111:string '' (length=0)

Так что по какой-то причине много ничего. Даже не echo’d html, находящийся в файле php. Действительно сбивает с толку, и я даже не уверен, как отладить его без каких-либо ответов или сообщений об ошибках для меня, чтобы продолжить. Кто-нибудь знает, что происходит или каким другим путем я могу пойти, чтобы проверить это?

0

Решение

Первый опубликованный вами скрипт имеет несколько синтаксических ошибок. Когда вы звоните через , вы получаете ошибку HTTP 500, потому что она вызывает исключения.

Несколько замечаний по тестированию:

  • Вы не закрываете свой foreach петля с фигурной скобкой.
  • Ваша серия вложенная if В утверждениях отсутствуют фигурные скобки.
  • $_SERVER superglobal не будет заполнен всеми значениями при запуске из командной строки (только из моего тестирования, но это не обязательно проблема), что приведет к нескольким undefined index ошибки.

Работайте над этим сценарием отдельно и, как только он запустится правильно, вы можете вызвать его из другого.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]