подмена REFERER

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

ivashka

Полезный
Регистрация
16 Май 2007
Сообщения
151
Реакции
15
Как подменить РЕФЕР при ПОСТ запросе, я передаю пост на другой сайт, но как мне сделать так, что бы он не понял что запрос с другого сайта, а принял как свой родной.
Пост отправляю посредством формы, т.к. пользователь вводит данные.
Заранее благодарен.
 
Примерно вот так:
Код:
[COLOR=#000000][COLOR=#000000][COLOR=#0000bb]<?php  [/COLOR]
[COLOR=#000000] $host [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#dd0000]"www.site.com"[/COLOR][COLOR=#007700];  [/COLOR]
[COLOR=#0000bb]$path [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#dd0000]"/somepage.php"[/COLOR][COLOR=#007700];  [/COLOR]
[COLOR=#0000bb]$fp [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]fsockopen[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]$host[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000bb]80[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000bb]$errno[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000bb]$errstr[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000bb]30[/COLOR][COLOR=#007700]);  [/COLOR]
[COLOR=#007700] if(![/COLOR][COLOR=#0000bb]$fp[/COLOR][COLOR=#007700]) echo[/COLOR][COLOR=#dd0000]"$errstr ($errno)<br />\n"[/COLOR][COLOR=#007700];  [/COLOR]
[COLOR=#007700] else{  [/COLOR]
[COLOR=#0000bb]$headers [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#dd0000]"GET $path HTTP/1.0\r\n"[/COLOR][COLOR=#007700];  [/COLOR]
[COLOR=#0000bb]$headers [/COLOR][COLOR=#007700].= [/COLOR][COLOR=#dd0000]"Host: $host\r\n"[/COLOR][COLOR=#007700];  [/COLOR]
[COLOR=#0000bb]$headers [/COLOR][COLOR=#007700].= [/COLOR][COLOR=#dd0000]"Accept: *\r\n"[/COLOR][COLOR=#007700];  [/COLOR]
[COLOR=#0000bb]$headers [/COLOR][COLOR=#007700].= [/COLOR][COLOR=#dd0000]"Accept-Charset: *\r\n"[/COLOR][COLOR=#007700];  [/COLOR]
[COLOR=#0000bb]$headers [/COLOR][COLOR=#007700].= [/COLOR][COLOR=#dd0000]"Accept-Encoding: deflate\r\n"[/COLOR][COLOR=#007700];  [/COLOR]
[COLOR=#0000bb]$headers [/COLOR][COLOR=#007700].= [/COLOR][COLOR=#dd0000]"Accept-Language: ru\r\n"[/COLOR][COLOR=#007700];  [/COLOR]
[COLOR=#0000bb]$headers [/COLOR][COLOR=#007700].= [/COLOR][COLOR=#dd0000]"Referer: [URL]http://poddleka.com/index.php\r\n[/URL]"[/COLOR][COLOR=#007700];  [/COLOR]
[COLOR=#0000bb]$headers [/COLOR][COLOR=#007700].= [/COLOR][COLOR=#dd0000]"User-Agent: Opera/8.01 (Windows NT 5.1; U; ru)\r\n\r\n"[/COLOR][COLOR=#007700];  [/COLOR]
[COLOR=#0000bb]fwrite[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]$fp[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000bb]$headers[/COLOR][COLOR=#007700]);  [/COLOR]
[COLOR=#007700]   while([/COLOR][COLOR=#0000bb]$text [/COLOR][COLOR=#007700]!= [/COLOR][COLOR=#dd0000]"\r\n"[/COLOR][COLOR=#007700]) [/COLOR][COLOR=#0000bb]$text [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]fgets[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]$fp[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000bb]128[/COLOR][COLOR=#007700]);  [/COLOR]
[COLOR=#0000bb]$text [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#dd0000]""[/COLOR][COLOR=#007700];  [/COLOR]
[COLOR=#007700]   while(![/COLOR][COLOR=#0000bb]feof[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]$fp[/COLOR][COLOR=#007700])) [/COLOR][COLOR=#0000bb]$text [/COLOR][COLOR=#007700].= [/COLOR][COLOR=#0000bb]fgets[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]$fp[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000bb]4096[/COLOR][COLOR=#007700]);  [/COLOR]
[COLOR=#0000bb]fclose[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]$fp[/COLOR][COLOR=#007700]);  [/COLOR]
[COLOR=#007700] }  [/COLOR]
[COLOR=#007700] echo [/COLOR][COLOR=#0000bb]$text[/COLOR][COLOR=#007700];  [/COLOR]
[COLOR=#0000bb]?>[/COLOR] [/COLOR]
[/COLOR]
 
Или типо такого можно
PHP:
 $handle = curl_init(); 

curl_setopt($handle, CURLOPT_COOKIE, 'remixlang=0;'); 
curl_setopt($handle, CURLOPT_PROXY, '91.196.0.75:80'); 
curl_setopt($handle, CURLOPT_VERBOSE, false); 
curl_setopt($handle, CURLOPT_HEADER, false); 
curl_setopt($handle, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($handle, CURLOPT_REFERER, 'http://www.weblancer.net/'); 
curl_setopt($handle, CURLOPT_URL, 'http://www.weblancer.net/account/login/'); 
curl_setopt($handle, CURLOPT_USERAGENT, 'User-Agent: Mozilla/6.0 (Windows; U; Windows NT 6.1; ru; rv:2.9.0.4) Gecko/2009102920 Firefox/3.1.4'); 
curl_setopt($handle, CURLINFO_HEADER_OUT, true); 
curl_setopt($handle, CURLOPT_POST, true); 
curl_setopt($handle, CURLOPT_POSTFIELDS, 'action=login&login=Buffalon&password=xXx');  

echo $response = iconv('windows-1251', 'UTF-8', curl_exec($handle)); 
//echo $response = curl_exec($handle); // У меня просто все на UTF8 

curl_close($handle);
 
Хм… Имхо, он хочет, чтобы не скрипт подменял поле Referer, т. к.:
Пост отправляю посредством формы, т.к. пользователь вводит данные.
Заранее благодарен.
Поэтому отвечу по теме.

Все HTTP-заголовки (включая поле Referer) формирует и отправляет браузер. Его поведением управлять нельзя - и это правильно. Единственный выход - это отправлять данные формы на свой скрипт - оттуда читать все данные и формировать уже новый запрос с помощью cURL или сокетов (см. примеры выше). Но пользователь будет видеть (происходит это очень быстро, но заметно), как его перенаправляют.
 
Можно попробовать дополнение для дополнение Firefox - Modify Headers
 
Если сначала твой скприт принимает данные, то им можно поменять переменную окружения передав ее дальше (если "чужой" обработчик инклюдится, например).
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху