подмена referer

Статус
В этой теме нельзя размещать новые ответы.

disik

Создатель
Регистрация
30 Дек 2007
Сообщения
17
Реакции
0
вообщем есть такая трабла, на локалхосте запускаю скрипт, где есть форма, куда я ввожу данные и посылаю POST запросом на sait.ru, перехватываю данные TamperData - там стоит Referer = localhost - как средствами ПХП можно подменить этот referer

пробывал так
$_SERVER[HTTP_REFERER]='sait.ru';

это на javascript
document.referrer='sait.ru';

нифига не работает, млин как всетаки подменить referer ???
 
Когда формируешь хидер в локальном скрипте для отправки запроса на сервер , то просто выстави такую строчку в строке хидера. Там же где Host:..., User-agent:...
Вот пример запроса. Правда GET но это не столь важно
Код:
GET /yandsearch?rpt=rad&text=test HTTP/1.1
Host: yandex.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
[B]Referer: http://www.domain.com/bla-bla[/B]

Его не столько нужно подменять в твоем случае, его надо просто добавить. Посмотри сам какой в итоге получается запрос на сервер. Если там нет реферера, добавь, если есть, подмени.
 
каким образом его можно указать, если я передаю данные через форму???

<FORM METHOD="post" ACTION="POST http://site.ru">

Введите имя: <INPUT NAME="name"></BR></BR>
Введите капчу: <INPUT NAME="pic"></BR></BR>
<INPUT type="submit" value="Регистрировать">

</FORM>
 
Я тебя тогда неверно понял. Я подумал, что у тебя локальный скрипт обращается на сервер методом POST, а у тебя просто сохраненная форма с другим action

В таком случае ты ничего не сможешь сделать, потому что браузер сам формирует запрос. Можно лишь отловить запрос и подменить. Тот же TamperData, но лучше для этой цели под огнелисом использовать Для просмотра ссылки Войди или Зарегистрируйся
 
каким образом его можно указать, если я передаю данные через форму???

<FORM METHOD="post" ACTION="POST http://site.ru">

Введите имя: <INPUT NAME="name"></BR></BR>
Введите капчу: <INPUT NAME="pic"></BR></BR>
<INPUT type="submit" value="Регистрировать">

</FORM>

ACTION="POST http://site.ru" поменяй на ACTION="somfile.php", потом сделай на локалхосте скрипт somfile.php который будет ловить этот запрос, менять рефера и отсылать запрос на Для просмотра ссылки Войди или Зарегистрируйся :)
 
ACTION="POST http://site.ru" поменяй на ACTION="somfile.php", потом сделай на локалхосте скрипт somfile.php который будет ловить этот запрос, менять рефера и отсылать запрос на Для просмотра ссылки Войди или Зарегистрируйся :)

А не проще (если это конечно типа денвера ,локальный веб сервер), создать новый домен и с этого домена отсылать запрос? По идее можно даже рефер google.com передать.
Или я в чем то неправ ?
 
ACTION="POST http://site.ru" поменяй на ACTION="somfile.php", потом сделай на локалхосте скрипт somfile.php который будет ловить этот запрос, менять рефера и отсылать запрос на Для просмотра ссылки Войди или Зарегистрируйся :)
При этом адрес в адресной строке будет Для просмотра ссылки Войди или Зарегистрируйся И подменить можно будет только первый раз. А второй запрос всё равно получит рефера
Ещё из корзины Для просмотра ссылки Войди или Зарегистрируйся
 
А не проще (если это конечно типа денвера ,локальный веб сервер), создать новый домен и с этого домена отсылать запрос? По идее можно даже рефер google.com передать.
Или я в чем то неправ ?

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

При этом адрес в адресной строке будет Для просмотра ссылки Войди или Зарегистрируйся И подменить можно будет только первый раз. А второй запрос всё равно получит рефера
ну почему же. мы же не знаем как там устроено у ТС. somfile.php это своеобразная прокся с подменой рефереров. Раньше бы я использовал для этой цели (а я для этой цели его часто использовал) proxomitron, который не привязывается только к огнелису, а является "прокси-фильтром" для любого браузера.

И вообще неясно зачем такая локальная форма. Почему нельзя открывать прямо на сайте. Мне только один раз понадобилось такое когда я у спонса инфу менял, которую запрещено было менять :)
 
А не проще (если это конечно типа денвера ,локальный веб сервер), создать новый домен и с этого домена отсылать запрос? По идее можно даже рефер google.com передать.
Или я в чем то неправ ?

хм отличная идея... ))) но все же сперва попробую через cURL сделать...

Добавлено через 8 минут
ACTION="POST http://site.ru" поменяй на ACTION="somfile.php", потом сделай на локалхосте скрипт somfile.php который будет ловить этот запрос, менять рефера и отсылать запрос на Для просмотра ссылки Войди или Зарегистрируйся :)

ACTION="POST http://site.ru" - это описка, сделано так как и писал ты, но я так понял таким методом рефер поменять неудастся, буду пробывать все это делать через cURL
 
Вообще то передача данных методом пост идет так
PHP:
$fp = fsockopen($host, 80, $errno, $errstr, 30); 
  // Проверяем успешность установки соединения 
  if (!$fp) echo "$errstr ($errno)<br />\n"; 
  else 
  { 
 
    // Данные POST-запроса 
    $data = "$post&\r\n\r\n";
    // Формируем HTTP-заголовки для передачи 
    // его серверу /htsrv/comment_post.php
    $headers = "POST $path HTTP/1.1\r\n"; 
    $headers .= "Host: $host\r\n"; 
    $headers .= "Content-type: application/x-www-form-urlencoded\r\n"; 
    $headers .= "Content-Length: ".strlen($data)."\r\n"; 
    // Подделываем cookie 
$headers .= "Cookie: PHPSESSID=$SID;\r\n"; 
	$headers .= "Referer: http://dupa.pl/\r\n";
    $headers .= "User-Agent: Opera/8.01 (Windows NT 5.1; U; ru)\r\n";
    $headers .= "Connection: Close\r\n\r\n"; 
	
    // Отправляем HTTP-запрос серверу 
 
    // Отправляем HTTP-запрос серверу 
    fwrite($fp, $headers.$data); 
    // Получаем ответ 
	$text="";
	$count=0;
   while (!feof($fp)) 
    { 
      $text .= fgets($fp, 1024); 
	   
     $count++;
	 if($count ==50)
	  {

	  break;
	}
	  
	}
    fclose($fp); 
   echo $text;
  }
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху