#1 2008.02.28 11:28

Oberon
Участник
Зарегистрирован: 2008.02.28
Сообщений: 5
Карма: 0
Профиль

как подделать реферер

автор: Oberon   (20.02.2008 в 18:58)
А подделать реферер никак нельзя?.. Другого выхода думаю нет,..   

автор: Gemorroj   (20.02.2008 в 19:35)
Можно конечно, это обычный заголовок. Только вот как раз чтобы его отправить, нужно писать что-то более серьезное нежели header('Location: ...');, а именно, использовать что-то из этого набора: curl, fsockopen, ini_set + file_get_contents   

автор: Oberon   (20.02.2008 в 20:52)
Боюсь, я более серьезное не осилю.. Если можно, подробнее об этом всем.. Лишь бы мобильные телефоны на этом работали,

/// поможеш?

Неактивен

#2 2008.02.28 14:54

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6588
Карма: 107
Профиль Веб-сайт

Re: как подделать реферер

опишу на мой взгляд самый простой способ, с помощью ini_set + file_get_contents

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<?php
 
// $url - адрес файла, который нужно скачать
// к примеру $url = $_GET['file'];
$url 'http://xxx.kmx.ru/file.zip';
 
// формируем Referer
// В нашем случае просто укажем адрес файла
$referer $url;
 
// Пишем заголовки, которые будут переданы
ini_set('user_agent',$_SERVER['HTTP_USER_AGENT']."\r\nAccept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\nAccept-Charset: $_SERVER[HTTP_ACCEPT_CHARSET]\r\nAccept-Language: $_SERVER[HTTP_ACCEPT_LANGUAGE]\r\nReferer: ".$referer);
 
// Забираем файл
$data file_get_contents($url);
 
// смотрим расширение
$ext strtolower(strrchr($url,'.'));
//в соответствии с расширением ставим нужный MIME тип
if($ext == '.jad')
{$mime 'text/vnd.sun.j2me.app-descriptor';}
elseif($ext == '.jar')
{$mime 'application/java-archive';}
elseif($ext == '.txt')
{$mime 'text/plain';}
elseif($ext == '.sis')
{$mime 'application/vnd.symbian.install';}
elseif($ext == '.cab')
{$mime 'application/vnd.ms-cab-compressed';}
elseif($ext == '.zip')
{$mime 'application/x-zip';}
elseif($ext == '.gz')
{$mime 'application/x-gzip';}
elseif($ext == '.tgz')
{$mime 'application/x-gzip';}
elseif($ext == '.bz')
{$mime 'application/x-bzip';}
elseif($ext == '.bz2')
{$mime 'application/x-bzip';}
elseif($ext == '.7z')
{$mime 'application/x-7z-compressed';}
elseif($ext == '.rar')
{$mime 'application/x-rar-compressed';}
elseif($ext == '.doc')
{$mime 'application/msword';}
elseif($ext == '.pdf')
{$mime 'application/pdf';}
elseif($ext == '.mp3')
{$mime 'audio/mpeg';}
elseif($ext == '.wav')
{$mime 'audio/x-wav';}
elseif($ext == '.wma')
{$mime 'audio/x-ms-wma';}
elseif($ext == '.avi')
{$mime 'video/x-msvideo';}
elseif($ext == '.3gp')
{$mime 'video/3gpp';}
elseif($ext == '.wmv')
{$mime 'video/x-ms-wmv';}
elseif($ext == '.mpg')
{$mime 'video/mpeg';}
elseif($ext == '.gif')
{$mime 'image/gif';}
elseif($ext == '.jpg')
{$mime 'image/jpeg';}
elseif($ext == '.jpe')
{$mime 'image/jpeg';}
elseif($ext == '.jpeg')
{$mime 'image/jpeg';}
else
{$mime 'application/octet-stream';}
 
// Теперь данные нужно передать пользователю
header('Accept-Ranges: bytes');
header('Content-Length: '.strlen($data));
header('Last-Modified: '.gmdate('r',time()).' GMT');
header('Connection: close');
 
// Тип файла
header('Content-Type: '.$mime);
// Имя файла
header('Content-Disposition: attachment; filename="'.basename($url).'"');
print $data;
?>

Должно работать, если не заблокирована функция ini_set

Неактивен

#3 2008.02.29 11:27

Helqg
Участник
Откуда: 52 регион
Зарегистрирован: 2008.01.23
Сообщений: 306
Карма: 2
Профиль

Re: как подделать реферер

Эт че ет вы такое делаете то?


Стране нужны автобусы!

Неактивен

#4 2008.02.29 13:48

Oberon
Участник
Зарегистрирован: 2008.02.28
Сообщений: 5
Карма: 0
Профиль

Re: как подделать реферер

Gemorroj спасибо, буду пробывать

Helqg, реферер подделываем smile

Неактивен

#5 2008.02.29 19:07

Helqg
Участник
Откуда: 52 регион
Зарегистрирован: 2008.01.23
Сообщений: 306
Карма: 2
Профиль

Re: как подделать реферер

Да я что то не пойму зачем? Может какие нибудь грабберы?


Стране нужны автобусы!

Неактивен

#6 2008.02.29 19:24

Admin
Administrator
Зарегистрирован: 2007.11.03
Сообщений: 95
Карма: -1
Профиль

Re: как подделать реферер

да, часто нужно для грабберов smile
в данном случае сервер не отдает файл если не передан соответствующий реферер.


сердце пронзенное ветром

Неактивен

#7 2008.05.14 10:22

Oberon
Участник
Зарегистрирован: 2008.02.28
Сообщений: 5
Карма: 0
Профиль

Re: как подделать реферер

Gemorroj написал:

опишу на мой взгляд самый простой способ, с помощью ini_set + file_get_contents
(...)
Должно работать, если не заблокирована функция ini_set

Вставил код, но выдает ошибку, в твоем примере в строке 69.. Вот что пишет:

Parse error: syntax error, unexpected T_ELSE in /home/darkto/public_html/wapquest/download.php on line 93

Даже не знаю почему,..

Неактивен

#8 2008.05.14 12:25

Helqg
Участник
Откуда: 52 регион
Зарегистрирован: 2008.01.23
Сообщений: 306
Карма: 2
Профиль

Re: как подделать реферер

а почему 69? 93?
Причем у него строк 83.


Стране нужны автобусы!

Неактивен

#9 2008.05.14 15:17

Oberon
Участник
Зарегистрирован: 2008.02.28
Сообщений: 5
Карма: 0
Профиль

Re: как подделать реферер

У него в примере это 69я строка... у меня - 93я,.. у меня скрипт побольше, в начале еще код есть,..

Неактивен

#10 2008.05.14 15:57

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6588
Карма: 107
Профиль Веб-сайт

Re: как подделать реферер

скопировал код, вставил в PHP Expert Editor, нажал F7. Синтаксических ошибок нет. Давай СВОЙ код wink

Неактивен

#11 2008.05.14 16:59

Oberon
Участник
Зарегистрирован: 2008.02.28
Сообщений: 5
Карма: 0
Профиль

Re: как подделать реферер

Уже нашел ошибку... Каюсь,smile свой "}" закомментил, когда твой код вставлял,..

Тут вот другой бок вылез, пытается скачаться файл file.zip размером 1,6кб вместо файла name.jar.. и файл не скачиваеться... сейчас свой скрипт дам,
Добавлено спустя   8 минут  13 секунд:

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
 
$id intval($_GET['id']);
 
$mod $_GET['mod'];
 
if(!empty($id)){
 
include "./inc.php";
 
$q_files = @mysql_query("select * from `quest_files` where `id` = '$id' ;");
 
$data = @mysql_fetch_array($q_files);
 
$url $data['r_url'];
 
$i $data['g_size'];
 
$i=$i+1;
 
if($mod=="jad"$url=preg_replace('/.$/''d'$url);
 
mysql_query("update `quest_files` set `g_size`='$i' where `id` = '$id'; ");
 
//header ("Location: $url");}
 
$url 'http://xxx.kmx.ru/file.zip';
$referer $url;
ini_set('user_agent',$_SERVER['HTTP_USER_AGENT']."\r\nAccept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\nAccept-Charset: $_SERVER[HTTP_ACCEPT_CHARSET]\r\nAccept-Language: $_SERVER[HTTP_ACCEPT_LANGUAGE]\r\nReferer: ".$referer);
$data file_get_contents($url);
$ext strtolower(strrchr($url,'.'));
if($ext == '.jad')
{$mime 'text/vnd.sun.j2me.app-descriptor';}
elseif($ext == '.jar')
{$mime 'application/java-archive';}
else
{$mime 'application/octet-stream';}
 
header('Accept-Ranges: bytes');
header('Content-Length: '.strlen($data));
header('Last-Modified: '.gmdate('r',time()).' GMT');
header('Connection: close');
header('Content-Type: '.$mime);
header('Content-Disposition: attachment; filename="'.basename($url).'"');
print $data;
}
else echo "id error";
?>

Отредактировано Oberon (2008.05.14 17:05)

Неактивен

#12 2008.05.14 17:24

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6588
Карма: 107
Профиль Веб-сайт

Re: как подделать реферер

у тебя в 27 строке ошибка... присваиваешь переменной $url значение реферера.
вот поправленный код.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
$id intval($_GET['id']);
 
$mod $_GET['mod'];
 
if(!empty($id)){
 
include './inc.php';
 
$data mysql_fetch_array(mysql_query('SELECT `r_url` FROM `quest_files` WHERE `id` = '.$id));
$url $data['r_url'];
 
if($mod=='jad'){
$url preg_replace('/.$/''d'$url);
}
 
mysql_query('UPDATE `quest_files` SET `g_size`=g_size+1 WHERE `id` = '.$id);
 
//header('Location: '.$url,true,301);}
 
// реферер
$referer 'http://xxx.kmx.ru/file.zip';
 
ini_set('user_agent',$_SERVER['HTTP_USER_AGENT']."\r\nAccept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\nAccept-Charset: $_SERVER[HTTP_ACCEPT_CHARSET]\r\nAccept-Language: $_SERVER[HTTP_ACCEPT_LANGUAGE]\r\nReferer: ".$referer);
 
$data file_get_contents($url);
$ext strtolower(strrchr($url,'.'));
if($ext == '.jad')
{$mime 'text/vnd.sun.j2me.app-descriptor';}
elseif($ext == '.jar')
{$mime 'application/java-archive';}
else
{$mime 'application/octet-stream';}
 
header('Accept-Ranges: bytes');
header('Content-Length: '.strlen($data));
header('Last-Modified: '.gmdate('r',time()).' GMT');
header('Connection: close');
header('Content-Type: '.$mime);
header('Content-Disposition: attachment; filename="'.basename($url).'"');
print $data;
}
else{
echo 'id error';
}
?>

Неактивен

#13 2008.05.14 17:40

Oberon1
Гость

Re: как подделать реферер

А так выдает ошибку

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/darkto/public_html/wapquest/download.php on line 10
 
Warning: Cannot modify header information - headers already sent by (output started at /home/darkto/public_html/wapquest/download.php:10) in /home/darkto/public_html/wapquest/download.php on line 35
 
Warning: Cannot modify header information - headers already sent by (output started at /home/darkto/public_html/wapquest/download.php:10) in /home/darkto/public_html/wapquest/download.php on line 36
 
Warning: Cannot modify header information - headers already sent by (output started at /home/darkto/public_html/wapquest/download.php:10) in /home/darkto/public_html/wapquest/download.php on line 37
 
Warning: Cannot modify header information - headers already sent by (output started at /home/darkto/public_html/wapquest/download.php:10) in /home/darkto/public_html/wapquest/download.php on line 38
 
Warning: Cannot modify header information - headers already sent by (output started at /home/darkto/public_html/wapquest/download.php:10) in /home/darkto/public_html/wapquest/download.php on line 39
 
Warning: Cannot modify header information - headers already sent by (output started at /home/darkto/public_html/wapquest/download.php:10) in /home/darkto/public_html/wapquest/download.php on line 40

Я не могу понять эту строчку

Код:

1
$referer = 'http://xxx.kmx.ru/file.zip';

почнму именно http://xxx.kmx.ru/file.zip... может вот так надо

Код:

1
$referer = $url;

?

#14 2008.05.14 17:46

Oberon1
Гость

Re: как подделать реферер

$referer = $url; так тоже выдает ошибку, ту же самую.. Запутался я ,.

#15 2008.05.14 18:12

Oberon1
Участник
Зарегистрирован: 2008.05.14
Сообщений: 7
Карма: 0
Профиль

Re: как подделать реферер

Там пару ошибок было, исправил,.. В общем, вот код,

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
$id intval($_GET['id']);
 
$mod $_GET['mod'];
 
if(!empty($id)){
 
include './inc.php';
 
$data mysql_fetch_array(mysql_query('SELECT `r_url` FROM `quest_files` WHERE `id` = '.$id));
$url $data['r_url'];
 
if($mod=='jad'){
$url preg_replace('/.$/''d'$url);
}
 
mysql_query('UPDATE `quest_files` SET `g_size`=g_size+1 WHERE `id` = '.$id);
 
//header('Location: '.$url,true,301);}
 
// реферер
$referer $url;
 
ini_set('user_agent',$_SERVER['HTTP_USER_AGENT']."\r\nAccept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1\r\nAccept-Charset: $_SERVER[HTTP_ACCEPT_CHARSET]\r\nAccept-Language: $_SERVER[HTTP_ACCEPT_LANGUAGE]\r\nReferer: ".$referer);
 
$data file_get_contents($url);
$ext strtolower(strrchr($url,'.'));
if($ext == '.jad')
{$mime 'text/vnd.sun.j2me.app-descriptor';}
elseif($ext == '.jar')
{$mime 'application/java-archive';}
else
{$mime 'application/octet-stream';}
 
header('Accept-Ranges: bytes');
header('Content-Length: '.strlen($data));
header('Last-Modified: '.gmdate('r',time()).' GMT');
header('Connection: close');
header('Content-Type: '.$mime);
header('Content-Disposition: attachment; filename="'.basename($url).'"');
}
else{
echo 'id error';
}
?>

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

Отредактировано Oberon1 (2008.05.14 18:12)

Неактивен

#16 2008.05.14 18:15

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6588
Карма: 107
Профиль Веб-сайт

Re: как подделать реферер

is not a valid MySQL result - догадайся как переводится? ошибка в SQL запросе
10 строка. $data = mysql_fetch_array(mysql_query('SELECT `r_url` FROM `quest_files` WHERE `id` = '.$id)); - синтаксических ошибок нет. вероятно с базой что-то не так.
$referer - это РЕФЕРЕР.
$url - это URL, путь к файлу, который ты собираешся скачать.
вобщем они могут иметь одинаковое значение.
можешь писать и $referer = $url; не важно.
посмотри что у тебя в переменной $url, она будет пустая. Т.к. на наш SQL запрос MySQL ответил руганью.

Неактивен

#17 2008.05.14 18:16

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6588
Карма: 107
Профиль Веб-сайт

Re: как подделать реферер

что за ошибки были? что-то не вижу никакой разницы.

Неактивен

#18 2008.05.14 18:27

Oberon1
Участник
Зарегистрирован: 2008.05.14
Сообщений: 7
Карма: 0
Профиль

Re: как подделать реферер

is not a valid MySQL result уже догодался как переводится, поэтому и исправил десятую строку,...
в переменной $var уже прямая ссылка на файл на сайте кмх...
вот про реферер я и не доконца пойму,.. насколько я понимаю, в нем нужно указать http://quest.kmx.ua/ - сайт, с которого идет загрузка,.. Или я чтото не так понимаю,..

Неактивен

#19 2008.05.14 18:30

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6588
Карма: 107
Профиль Веб-сайт

Re: как подделать реферер

да, сайт с которого производится загрузка.

Неактивен

#20 2008.05.14 18:38

Oberon1
Участник
Зарегистрирован: 2008.05.14
Сообщений: 7
Карма: 0
Профиль

Re: как подделать реферер

в общем, поменял на $referer = 'http://quest.kmx.ua/'; , ничего не поменялось, - начинаеться загрузка файла, и тут же сбрасывается,..

Неактивен

#21 2008.05.14 19:07

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6588
Карма: 107
Профиль Веб-сайт

Re: как подделать реферер

перед всеми header'ами напиши print $url; exit; что показывает?

Неактивен

#22 2008.05.14 19:11

Oberon1
Участник
Зарегистрирован: 2008.05.14
Сообщений: 7
Карма: 0
Профиль

Re: как подделать реферер

путь к файлу, http://quest.kmx.ua/files/128x160/liftboy_128x160.jar

Неактивен

#23 2008.05.14 19:30

Oberon1
Участник
Зарегистрирован: 2008.05.14
Сообщений: 7
Карма: 0
Профиль

Re: как подделать реферер

интересно, я вот попробовал с телефона скачать, раз через раз выпадает превышение таймаута соединения, а иногда пишет вот такое

Warning: file_get_contents(http://quest.kmx.ua/files/240x320/litlboy_240x320.jar) [function.file-get-contents]: failed to open stream: HTTP request failed! всякие_иероглифы in /home/darkto/public_html/wapquest/download.php on line 25

Warning: Cannot modify header information - headers already sent by (output started at /home/darkto/public_html/wapquest/download.php:25) in /home/darkto/public_html/wapquest/download.php on line 34

Warning: Cannot modify header information - headers already sent by (output started at /home/darkto/public_html/wapquest/download.php:25) in /home/darkto/public_html/wapquest/download.php on line 35

Warning: Cannot modify header information - headers already sent by (output started at /home/darkto/public_html/wapquest/download.php:25) in /home/darkto/public_html/wapquest/download.php on line 36

Warning: Cannot modify header information - headers already sent by (output started at /home/darkto/public_html/wapquest/download.php:25) in /home/darkto/public_html/wapquest/download.php on line 37

Warning: Cannot modify header information - headers already sent by (output started at /home/darkto/public_html/wapquest/download.php:25) in /home/darkto/public_html/wapquest/download.php on line 38

Warning: Cannot modify header information - headers already sent by (output started at /home/darkto/public_html/wapquest/download.php:25) in /home/darkto/public_html/wapquest/download.php on line 39

Неактивен

#24 2008.05.14 19:39

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6588
Карма: 107
Профиль Веб-сайт

Re: как подделать реферер

реферер не надо даже кстати.
блин, идиотская ошибка, обидно) заголовки-то мы вывели, а сам файл не отдаем)
в конце еще напиши print $data;
сейчас коды выше поправлю.

Неактивен

#25 2008.05.14 19:47

Oberon1
Участник
Зарегистрирован: 2008.05.14
Сообщений: 7
Карма: 0
Профиль

Re: как подделать реферер

во.. качает,) сейчас еще раз все перепроверю,... все ли нормально,

Неактивен

#26 2008.05.14 20:04

Oberon1
Участник
Зарегистрирован: 2008.05.14
Сообщений: 7
Карма: 0
Профиль

Re: как подделать реферер

Проверил,. Спасибо большое,... smile

Неактивен

#27 2008.06.14 02:05

Uberion
Участник
Зарегистрирован: 2008.06.14
Сообщений: 3
Карма: 1
Профиль

Re: как подделать реферер

Мoжнo вoпpoc тудa жe? A kak пpoвepить referer?


Ничтo нe вeчнo пoд лунoй, kpoмe бaгoв в ckpиптax...и тapakaнoв smile

Неактивен

#28 2008.06.14 04:03

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6588
Карма: 107
Профиль Веб-сайт

Re: как подделать реферер

Код:

1
2
3
<?php
print $_SERVER['HTTP_REFERER'];
?>

Неактивен

#29 2008.06.14 10:27

Uberion
Участник
Зарегистрирован: 2008.06.14
Сообщений: 3
Карма: 1
Профиль

Re: как подделать реферер

A пpoвepить нa aдpec kak? Tak мoжнo?

Код:

1
$url = 'http://site.ru'; if(!ereg($_SERVER['http_referer'], "^$url") exit;

Tипa, ecли нaчaлo нe мoй caйт, тo пocлaть


Ничтo нe вeчнo пoд лунoй, kpoмe бaгoв в ckpиптax...и тapakaнoв smile

Неактивен

#30 2008.06.14 12:30

denich
Участник
Откуда: нижегородская область
Зарегистрирован: 2008.05.28
Сообщений: 301
Карма: 0
Профиль

Re: как подделать реферер

а что означает ereg и $_SERVER['HTTP_REFERER']


ska ska ska

Неактивен

#31 2008.06.14 13:09

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6588
Карма: 107
Профиль Веб-сайт

Re: как подделать реферер

$_SERVER['HTTP_REFERER'] - в этом элементе массива будет реферер, если он передан (далеко не всегда)
ereg - рункция регуларного выражения. Честно говоря о ereg'ах лучше вообще забыть. Для регулярок использовать PERL'овские регулярки (preg_match, preg_replace и др) т.к. они шустрее и в PHP 6 POSIX регулярки (ereg и др) будут вообще устранены
проверить лучше строковой функцие какой-нить

Код:

1
2
3
4
5
6
7
8
<?php
if(substr_count($_SERVER['HTTP_REFERER'], $_SERVER['HTTP_HOST'])){
// адрес встречается в реферере
}
else{
// реферер не передан, либо в нем нету адреса сайта
}
?>

$_SERVER['HTTP_HOST'] - здесь адрес твоего хоста, так что задавать отдельную переменную с адресом сайта не нужно.

Неактивен

Дополнительно

forum.wapinet.ru

PunBB Mod v0.6.2
0.022 s