Скрипт перенаправления PHP-Referer
часто, при поиске ответов, я обнаружил, что некоторые веб-сайты позволят вам прочитать информацию, которую они предлагают, если референт, например, google.com - ... Тем не менее, если вы свяжетесь непосредственно с информацией, она будет недоступна.
то, что я ищу, - это самый маленький PHP-скрипт, который установит реферер по моему выбору и пункт назначения, например:
http://example.com/ref_red.php?referer=http://google.com/&end=http://example.net/
Примечания:
- ref_red.в PHP имя сценария на мой пример.
- заголовок и конец должен признать адресу http, https, ftp.
-
заголовок и конец может содержать URI любого типа как http://end.com или так сложно, как:
http://example.com/some/rr/print.pl?document=rr
, например.
Примечание: как рекомендовано в ответе, я добавляю это. Сценарий не является полным прокси-сервером как таковым. будет проксирован только начальный HTTP-запрос (не последующие запросы,такие как изображения, и т. д.) Для единственной целью настройки заголовок.
3 ответов
эта функция должна дать вам отправную точку он будет получать любой HTTP url с указанным referrer
обработка запросов parms должна быть довольно тривиальной, поэтому я оставлю эту часть для вас
<?php
echo geturl('http://some-url', 'http://referring-url');
function geturl($url, $referer) {
$headers[] = 'Accept: image/gif, image/x-bitmap, image/jpeg, image/pjpeg,text/html,application/xhtml+xml';
$headers[] = 'Connection: Keep-Alive';
$headers[] = 'Content-type: application/x-www-form-urlencoded;charset=UTF-8';
$useragent = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)';
$process = curl_init($url);
curl_setopt($process, CURLOPT_HTTPHEADER, $headers);
curl_setopt($process, CURLOPT_HEADER, 0);
curl_setopt($process, CURLOPT_USERAGENT, $useragent);
curl_setopt($process, CURLOPT_REFERER, $referer);
curl_setopt($process, CURLOPT_TIMEOUT, 30);
curl_setopt($process, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($process, CURLOPT_FOLLOWLOCATION, 1);
$return = curl_exec($process);
curl_close($process);
return $return;
}
?>
вы можете использовать одну из услуг, доступных в Интернете, которые позволяют скрывать рефереров (установив их адрес), но вы не можете навязать конкретного реферера, который не является фактическим реферером. Пользователь должен быть перенаправлен на этот веб-сайт (который будет отображаться как реферер), прежде чем он будет перенаправлен на целевой веб-сайт.
одна из таких услуг:http://linkanon.com
изменить:
поскольку вы изменили свой вопрос сейчас, мой комментарий о написание агента пользователя на PHP, который действует как прокси, применяется, но тогда это приближается к преступной деятельности, потому что вы будете отображать сторонний веб-сайт пользователю, который может подумать, что он находится на фактическом веб-сайте, в то время как на самом деле он загрузит ваш контент (Контент, который вы передали). Чтобы выполнить эту близкую к преступной деятельность (вы в одном шаге от попытки прочитать имя пользователя и пароль), вы загружаете содержимое веб-сайта третьей стороны с помощью PHP, используя свой собственный письменный пользовательский агент, который указывает поддельный реферер и просто передает вывод посетителю вашего сайта. Функция в PHP, которая позволяет отправлять HTTP-заголовки, является header ($header):
header("Referer: http://example.org");
вместо того, чтобы кричать на людей, которые пытаются помочь, вы можете попробовать прочитать HTTP (это протокол, согласно которому мир поворачивается) спецификация относительно заголовка Referer:http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html (См. Раздел 14.36).
вы также может потребоваться прочитать http://en.wikipedia.org/wiki/Referrer_spoofing где вы можете видеть, что это все о стороне клиента. PHP-это серверная сторона. Все, что вы можете сделать, это попытаться написать клиентский код (Javascript), сгенерированный PHP, но если Вам повезет, то вы взломаете мир пользователя.
referer устанавливается вашим браузером, а не каким-либо механизмом на стороне сервера. Вы могли бы, я думаю, построить прокси в PHP, который делает запрос удаленного сервера и устанавливает заголовок referer соответствующим образом. Кажется более полезным просто использовать плагин Firefox, например http://www.stardrifter.org/refcontrol/.
Edit: я бы перефразировал ваш вопрос, чтобы было ясно, что вы хотите написать PHP-прокси с пользовательским заголовком реферера. Я бы, наверное, просто изменил что-то вроде http://sourceforge.net/projects/poxy/ чтобы взять параметр referrer и передать его.
редактировать снова: вы можете быть ясны в том, что вы просите, но просить невозможного не делает это возможным. Браузер отвечает за установку заголовка реферера; он использует URI, который заставил его перенаправить на новый ресурс. Вы просите сценарий, который говорит: "пожалуйста, посетите http://example.net, но представьте, что я на самом деле www.foo.com когда вы это сделаете". Нет никакого механизма для сервера, чтобы инструктировать браузер "лгать" о том, откуда он пришел.
Я полагаю, что это может быть возможно с помощью некоторого запутанного взлома JavaScript, но это будет взлом в смысле черной шляпы - веб-сайт, способный заставить браузер обмануть реферера, будет реальной дырой в безопасности.