Проблема перенаправления на моем прокси-сервере PHP для загрузки веб-страниц.Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Проблема перенаправления на моем прокси-сервере PHP для загрузки веб-страниц.

Сообщение Anonymous »

У меня есть прокси-сервер, написанный на PHP для браузера в проекте браузера, но когда я внутри чего-то вроде google.com и пытаюсь выполнить поиск внутри прокси-сервера, я перехожу на «proxyserver/search?q» =hi» вместо ожидаемого результата «proxyserver/proxy.php?url=https://google.com/search?q=hi»
По сути, основная проблема заключается в том, что сайт, отображаемый внутри прокси-сервера, пытался перевести меня с /pageone на /pagetwo, он переводит меня с «proxyserver/proxy.php?url=https://example.com/pageone» на «proxyserver/pagetwo»
Я перепробовал почти все, чтобы исправить это, но по какой-то причине это не сработало, поэтому я просто вернулся к старому коду, в котором все еще есть ошибка.
Полный код:
ob_start("ob_gzhandler");
ini_set('memory_limit', '128M');
session_start();

$cookieFile = 'cookies.txt';

if (!isset($_COOKIE['PHPSESSID'])) {
clearCookies();
}

if ($_SERVER['REQUEST_METHOD'] === 'GET' && isset($_GET['url'])) {
$url = $_GET['url'];
proxyRequest($url);
} elseif ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['url'])) {
$url = $_POST['url'];
$postData = http_build_query($_POST);

echo "Debug: POST URL - " . $url . "
";
echo "Debug: POST Data - " . $postData . "
";

if (isset($_GET['url'])) {
$url = $_GET['url'];
echo "Debug: Using GET URL - " . $url . "
";
}

if (!filter_var($url, FILTER_VALIDATE_URL)) {
echo "Error: Invalid URL.";
exit;
}

proxyRequest($url, $postData);
} else {
echo "Debug: Invalid request received. ";
echo "Debug: GET Data - " . json_encode($_GET) . "
";
echo "Debug: POST Data - " . json_encode($_POST) . "
";

echo "Error: Invalid request.";
}

function proxyRequest($url, $postData = null) {
header('Content-Type: text/html');
header('Access-Control-Allow-Origin: *');

global $cookieFile;

$customDNS = [
'example.com:80:1.1.1.1',
'example.com:443:8.8.8.8',
];

$ch = curl_init($url);

$options = [
CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36',
CURLOPT_HTTPHEADER => [
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'Accept-Language: en-GB',
'Accept-Encoding: gzip, deflate',
'Dnt: 1',
'Sec-GPC: 1',
'Sec-Fetch-Dest: document',
'Sec-Fetch-Mode: navigate',
'Connection: keep-alive',
'Upgrade-Insecure-Requests: 1',
],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_MAXREDIRS => 10,
CURLOPT_AUTOREFERER => true,
CURLOPT_ENCODING => '',
CURLOPT_TIMEOUT => 10,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_RESOLVE => $customDNS,
];

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$options[CURLOPT_POST] = true;
$options[CURLOPT_POSTFIELDS] = $postData;
}

if (isset($_COOKIE['PHPSESSID'])) {
$options[CURLOPT_COOKIEJAR] = $cookieFile;
$options[CURLOPT_COOKIEFILE] = $cookieFile;
}

curl_setopt_array($ch, $options);

$content = curl_exec($ch);

if ($content !== false) {
preg_match_all('/Set-Cookie: (.*?);/i', $content, $matches);
$receivedCookies = implode('; ', $matches[1]);

file_put_contents($cookieFile, $receivedCookies);

error_log('Received content: ' . $content);

echo $content;
} else {
error_log('Error: Unable to fetch content from the external website. cURL Error: ' . curl_error($ch));

echo "Error: Unable to fetch content from the external website. cURL Error: " . curl_error($ch);
}

curl_close($ch);
}

function clearCookies() {
global $cookieFile;
if (file_exists($cookieFile)) {
unlink($cookieFile);
}
}
?>


Подробнее здесь: https://stackoverflow.com/questions/771 ... g-webpages
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»