Как написать свой грабер

Новостные сайты являются хорошим источником данных для обработки моделями машинного обучения. При этом, большинство новостных web-ресурсов перегружено различной «лишней» информацией, не относящейся к сути статей, будь то навязчивая реклама, всплывающие окна со служебной информацией и т.д. Очистка статей при выгрузке с web-ресурсов от «шума» помогла бы снизить количество ошибок обработки данных.

В этой статье мы рассмотрим создание инструмента, с помощью которого можно получать читабельный текст из статей с минимальной «лишней» информацией.

Чтобы написать Ваш собственный граббер самостоятельно, Вам потребуются знания в области Web-разработки, такие как понимание языка гипертекстовой разметки HTML (понимание значений тегов, размещение информации внутри них) и основной информации о структуре DOM-дерева при отрисовке сайтов, а также базовые навыки программирования на языке Python.

Итак, начнем.

Для работы нам потребуются библиотеки:

  • request
  • BeautifulSoup

Библиотека requests по факту является стандартом при работе с составлением HTTP-запросов к web-ресурсам. В этой библиотеке собрано множество методов, с помощью которых значительно упрощается процесс создания запросов и разбора ответов от сервера. И это помогает нам сосредоточиться на написании непосредственно нашего алгоритма, а не на поиске способов обеспечить стабильную связь и получение данных с web-ресурсов.

В нашем скрипте будем использовать получение данных при помощи HTTP-метода GET. Метод GET является инструкцией web-ресурсу о том, что с него запрашиваются некоторые данные, указанные как параметр к GET. Чтобы выполнить такой запрос, используя библиотеку requests, достаточно ввести requests.get (< URL >; <дополнительные параметры>). При существовании URL и при наличии прав на доступ к ресурсу, в ответ придут данные HTML-страницы, которые уже можно обработать различными инструментами языка Python. Натболее распространенным инструментом для данной задачи является библиотека BeautifulSoup.

Библиотека BeautifulSoup используется для анализа документов HTML и XML. Она создает дерево синтаксического анализа для полученных страниц (DOM-дерево), которое можно использовать для извлечения данных из HTML в удобные для обработки на языке Python конструкции (словари, списки, строки), что полезно для очистки веб-страниц от ненужной информации.

Алгоритм работы нашей программы будет заключаться в том, что при запуске скрипта Python из командной строки и с указанием URL требуемой нам статьи в качестве параметра, мы будем получать HTML-страницу при помощи метода get библиотеки request. Затем создаем объект BeautifulSoup, который непосредственно и помогает нам очистить статью от лишней информации.

Но для того, чтобы обозначить, что именно считать лишней информацией, а что полезной, нам необходимо проанализировать источник, из которого мы будем брать статьи. Сейчас распространенной практикой является разработка web-ресурсов в блочном формате. Все данные, которые необходимо разместить на страницах разбиваются по логическим блокам и помещаются в теги < div > < /div >

Далее, уже внутри этих блоков информация может принимать различные вариации в зависимости от назначения. В блоках, предназначенных для навигации преобладают ссылочные теги, в блоках, где имеется много изображений, соответственно, много тегов. Нас же интересуют блоки web-страниц, в которых хранятся тексты статей.

Если провести небольшое исследование размещения информации на новостных сайтах, то почти на каждом мы увидим, что блоки с непосредственно самой статьей изобилуют тегами < p > < /p >

Поэтому, первым логичным шагом для создания нашего простого граббера будет взять за основу именно тег < p > < /p >

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

Чтобы наш код можно было удобно переиспользовать в других проектах и подключать файл скрипта в другие скрипты Python — первым делом напишем класс, в котором будем хранить все нужные нам методы и объекты.

class GrabberArticle:
url = «»
filename = «»
path = «»
content_tags = [‘p’]
wrap = 80

Описание объектов:

url – URL статьи, которую хотим обработать.

filename – имя файла для сохранения. Соответствует последнему элементу в URL. Например, для host.net/path1/path2 — это path2

path – Путь для сохранения обработанного текста. Соответствует ([Каталог с файлом скрипта]/host.net/path1/path2/…)

content_tags – HTML-теги для обработки. По умолчанию установлен тег

, так как мы приняли его за основной тег, в котором наиболее часто размещён основной полезный контент статьи.

wrap – количество символов в строке очищенного текста. По умолчанию установлено значение в 80 символов — негласное правило читаемости текста на экране.

Давайте теперь напишем главный метод для нашего класса GrabberArticle, который будет получать ответ от web-ресурса и при помощи BeautifulSoup отфильтровывать только нужные нам данные:

def get_text(self):
r = requests.get(self.url).text
soup = BeautifulSoup(r, ‘html.parser’)
# найдем все теги по списку self.content_tags
content = soup.find_all(self.content_tags)
wrapped_text = «»
for p in content:
# пропускаем теги без значений
if p.text != »:
# форматирование ссылок в вид [ссылка]
links = p.find_all(‘a’)
if links != »:
for link in links:
p.a.replace_with(link.text + str(«[» + link[‘href’] + «]»))
# устанавливаем ширину строки равной self.wrap (по умолчанию, 80 символов)
wrapped_text += ».join(textwrap.fill(p.text, self.wrap)) + «nn»
self.write_in_file(wrapped_text)

В качестве результата будем выводить текстовый файл, который будет называться по имени последнего элемента URL- адреса. Также создадим иерархию для размещения этого файла в файловой системе, исходя из оставшихся элементов URL-адреса. Например, для URL: https://lenta.ru/news/2020/04/09/centenarian: файл будет сохранен под именем centenarian.txt в каталоге [Директория со скриптом]/lenta.ru/news/2020/04/09/. Такая иерархия на первый взгляд может выглядеть избыточной. Но такой подход может быть полезен, если с одного и того же источника (и тем более нескольких) будет выгружаться большое количество статей. В такой структуре данные будет легко сгруппировать по определенным признакам. Это позволит гораздо проще обращаться к массиву данных из статей, если, например, они будут использованы для проведения тематических исследований с помощью моделей машинного обучения.

def __init__(self, url_address):
self.url = url_address
# Get path and filename for saving article by splitting URL.
# If the URL ends with some.html, then the previous (-2) element
# of the path is taken to form the path and the filename = some.html.txt respectively.
path_arr = self.url.split(‘/’)
if path_arr[-1] != »:
self.filename = path_arr[-1] + «.txt»
self.path = os.getcwd() + «/».join(path_arr[1:-1])
else:
self.filename = path_arr[-2] + «.txt»
self.path = os.getcwd() + «/».join(path_arr[1:-2])
if not os.path.exists(self.path):
os.makedirs(self.path)

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

def write_in_file(self, text):
# записывает text в каталог self.path:»[CUR_DIR]/host.ru/path_item1/path_item2/…»
file = open(str(self.path) + ‘/’ + str(self.filename), mode=»a»)
file.write(text)
file.close()

Готово! Теперь наш скрипт можно запускать из командной строки, просто передавая ему URL статьи:

Наш скрипт формирует текстовый файл с иерархией, соответствующей URL. Текст в таком формате полностью готов для дальнейшей обработки для задач NLP в машинном обучении. Ну а сама статья стала намного читабельнее без перегрузки лишней информацией.

В дальнейшем данный скрипт можно усовершенствовать так, чтобы он в качестве входных данных использовал файл со списком URL и выгружал уже готовый массив данных целиком. А для написания более детального скрипта выгрузки для Ваших источников необходимо просто дописать нужные теги в объект GrabberArticle.content_tags, либо передавать их через отдельный файл настроек.

Примечание:

Несмотря на то, что грабберы являются очень полезным инструментом по созданию выборок для проведения исследований, машинная выгрузка данных с web-ресурсов приводит к значительному повышению сетевой нагрузки на сайты и доставляет проблемы владельцам ресурсов. Некоторые даже блокируют ip-адреса, с которых замечена подобная активность. Поэтому призываю пользоваться грабберами в пределах разумного и не перегружать удаленные web-ресурсы, чтобы не вызывать негативных последствий на них.

Пишем граббер на PHP

Грабберами в народе называют серверные скрипты, предназначенные для получения данных с

различных серверов и встраивания их в свои страницы. В инете есть куча примеров RSS-грабберов,

извлекающих тексты с новостных лент, но мне лично нужен не какой-то RSS, которым
я ни разу в жизни не пользовался, а полноценный скрипт, который легко настроить для
извлечения любой нужной мне информации с любой из доступных в сети страниц.

Так что эта небольшая статья — как раз пример написания граббера на языке PHP.

Задача состоит, собственно, из 3 этапов.

1. Получение данных с нужного нам URL

Для этого в PHP существует несколько возможностей:

Стандартная функция fopen, служащая для открытия файла

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

ошибок сервера и т.д. Кроме того, она может быть запрещена на хостинге через http.
Тем не менее, вот пример откуда-то. Здесь мы парсим выдачу популярного сайта bash.org:

<? 
 $url='http://www.bash.org.ru/best';
 $file = @fopen ($url, 'r');
 if ($file==false) print '<p>Не могу открыть сайт '.$url.'!';
 else {
  $contents = fread ($file, 100000);
  $contents = preg_match_all('|<div>(.+)</div>|U',$contents,$frazes); 
  for($i=0;$i<5;$i++){ 
    if ($i<>5) echo "<hr>".$frazes[1][$i]."rn<hr>"; 
  } 
  fclose ($file);
 }
?>

Популярный вариант этого же подхода еще проще —

<? 
 $file = file_get_contents('http://www.bash.org.ru/best'); 
 $file = preg_match_all('|<div>(.+)</div>|U',$file,$frazes); 
 for($i=0;$i<11;$i++){ 
    if ($i<>5) echo "<hr>".$frazes[1][$i]."rn<hr>"; 
  } 
?>
$str=file_get_contents(”http://google.com/”);

(по сути, file_get_contents — это fopen, fread, fclose одной командой)

Библиотека cURL

Удобнее, но также может быть не установлена или запрещена на хостинге.

Соединение через сокеты

Именно его мы используем, чтоб
HTTP-заголовок формировался полностью под нашим контролем.
Полноценно проверять коды ошибок в учебной статье не будем, не надейтесь, но
все же скрипт должен получиться похожим на человеческий.

Следующая функция получает содержимое, расположенное на хосте $host по абслютному
пути $path. Имя хоста не включает в себя префиксов http://www, путь начинается с символа
корневого каталога /.

function get_URL_by_socket ($host,$path) { 
 //Получает URL $path с хоста $host через сокеты.
 $fp = fsockopen($host, 80); 
 if (!$fp) { 
  die ("Не могу получить данные с url http://$host/$path"); 
 } 
 else { 
  $out = "GET $path HTTP/1.0rn"; 
  $out .= "Accept: image/gif, application/xhtml+xml, */*rn"; 
  $out .= "Accept-Language: rurn"; 
  $out .= "Host: $hostrn"; 
  //Имитируем браузер Opera Mini:
  $out .= "User-Agent: Opera/8.01 (J2ME/MIDP; ".
   "Opera Mini/2.0.4509/1716; ru; U; ssr)rn"; 
  $out .= "Cache-Control: no-cachern"; //Не кэшировать 
  $out .= "Connection: Closernrn"; 
  fwrite($fp, $out); 
  $headers = ""; 
  while ($str = trim(fgets($fp))) 
   $headers .= "$strn"; 
  $body = ""; 
  while (!feof($fp)) 
   $body .= fgets($fp); 
  fclose($fp); 
 } 
 return $body; 
}
2. Извлечение содержимого из страницы

На следующем этапе мы должны извлечь из кода страницы, полученного функцией

get_URL_by_socket, полезную для нас часть. Для этой цели в PHP существют регулярные выражения
(ссылка на статью внизу страницы) и строковые функции. Я для простоты взял здесь случай,
когда мы можем выделить в коде страницы куски текста, однозначно ограничивающие нужную
нам часть снизу ($end) и сверху ($start). В принципе, при внимательном анализе исходного кода

любой страницы
(в браузере обратитесь к меню Вид, пункту «Исходный текст» или «Источник») легко выделить
такие куски. Так как мы будем писать их внутрь строковых переменных, ограниченных
двойными кавычками, то если в тексте строки встречается двойная кавычка «, ее нужно заменить
на сочетание символов «, как здесь:

$start="<div class="temper">";

Всю информацию будет обрабатывать следующая функция:

function process($s,$start,$end,$include) { 
 //Парсит полученный файл - здесь-то и пишется главное
 //У нас это извлечение содержимого от $start до $end
 $s1=strpos ($s,$start);
 $s2=strpos ($s,$end);
 if (!is_integer($s1)) {
  return "Не найден начальный сегмент: ".htmlspecialchars($start);
 }
 if (!is_integer($s2)) {
  return "Не найден конечный сегмент: ".htmlspecialchars($end);
 }
 if ($s1>$s2) {
  return "Конечный сегмент предшествует начальному";
 }
 if ($include) { //Включать начало и конец
  return substr ($s,$s1,$s2-$s1+strlen($end));
 }
 else { //Исключить начало и конец
  $s1+=strlen($start);
  return substr ($s,$s1,$s2-$s1);
 }
}

Параметр $include должен быть равен true, если строки $start и $end надо оставить в выводе
или false, если их надо исключить.

3. Дополнительная обработка и вывод

Строку, возвращенную функцией process, можно дополнительно обработать (например, исключить
лишние стили или ссылки, сделать относительные пути абсолютными и т.п.), либо сразу вывести
ее на экран функцией PHP print или echo. В приведенном ниже примере единственная вызываемая
пользователем парсера функция parser вызывает 2 остальные функции и
дополнительно один раз шлет заголовок с кодировкой документа (если модуль работает из готового
движка, блок с вызовом header нужно убрать).

function parser ($host,$path,$start,$end,$include) {
 //Основной вызов парсера:
 //$host, $path - хост без http://www. и путь к файлу, начиная с /
 //$start, $end - строки начала и конца извлекаемого содержимого
 //$include - если true, включать в вывод строки $start и $end
 static $first=true;
 $s= get_URL_by_socket ($host,$path); 
 if ($first) {  //Заголовок посылается только при 1-м вызове
  $first=false; //Если вызывается из "движка" - можно убрать этот блок
  header('Content-type:text/html;charset=windows-1251'); 
 }
 return process($s,$start,$end,$include);
}

Вызвать наш парсер можно, например, так:

$host="ngs.ru";
$path="/";
$start="<div class="temper">";
$end="width="30" height="15"></td>n	</tr>n</table>";
$include=true;
print parser ($host,$path,$start,$end,$include);

Здесь мы вытаскиваем краткий прогноз погоды с новосибирского городского сервера НГС.
Обратите внимание, что все пробелы, которые были в полученном по адресу файле, я сохранил в строке параметра $end, а переносы строк заменил на n

Еще пример:

$s=parser ("pers.narod.ru","/index.html",
 "<title>","</title>",false);
print'<br>'.$s;

Здесь просто берется титул (содержимое тега TITLE) моей домашней странички.

Думаю, на основе этой статьи нетрудно модифицировать граббер под свои задачи.

Скачать и ссылки

 Скачать этот пример в одном файле .PHP (ZIP) (1 Кб)

 Статья про регулярные выражения PHP — по-моему, одна из лучших

 Оригинал статьи

10.02.2009, 14:03 [20538 просмотров]


К этой статье пока нет комментариев, Ваш будет первым

<?php
/*
Любой граббер для удобства можно разделить на ТРИ оcновных части-этапа:
-получение
-обработка
-выдача

Получение.
Для того, что бы граббер нормально функционировал необходимо написать функцию для получнения
страницы с удаленного хоста по заданному url, надежнее пользоваться сокетами
(потому что библиотека CURL установлена не везде и не всегда, использовать file_get_contents()
и комбинации implode(»,file(..)) конечно тоже можно, просто сокет предоставляет побольше возможностей.
Напишем функцию получния страницы по урл.
*/

function data($path,$host)
{
/*
$path путь к файлу скрипта, а так же передаваемые параметры
$host сграббливаемый хост (например, sasisa.ru)
*/
$fp = fsockopen($host, 80);
if (!$fp)
{
die(‘ошибка’);
}
else
{
$out = «GET $path HTTP/1.0rn»;
$out .= «Accept: image/gif, application/xhtml+xml, */*rn»;
$out .= «Accept-Language: rurn»;
$out .= «Host: $hostrn»;

//прикинемся оперой-мини
$out .= «User-Agent: Opera/8.01 (J2ME/MIDP; Opera Mini/2.0.4509/1716; ru; U; ssr)rn»;

$out .= «Cache-Control: no-cachern»;
$out .= «Connection: Closernrn»;

fwrite($fp, $out);
$headers = «»;

while ($str = trim(fgets($fp)))
$headers .= «$strn»;

$body = «»;

while (!feof($fp))
$body .= fgets($fp);
fclose($fp);
}
//возвращаем данные
return $body;
}

/*
Итак, функция для получения страницы готова, теперь составим функцию для обработки данных, тоесть для
выреза рекламы, подмены ссылок итп
*/

/*
function process($s)
{
Здесь сложно дать какие-то рекоммендации, все «грабберописание» состоит в основном в
придумывании этой функции, сделаем пока что «заглушку» на этом месте

return $s;
}
*/

/*
Для корректной работы грабба необходимо теперь правильно определять переменную $path, для примера давайте граббить
всем известный http://wen.ru/forum/index.php
пример очень характерный, потому что многие «потенциальные жертвы» грабов (загруз центры например)
состоят как раз из одного файла
*/

//с хостом определились
$host=’wen.ru’;

if (empty($_SERVER[‘QUERY_STRING’]))
{
//начальная позиция
$path=’/forum/index.php’;
}
else
{
//новые параметры
$path=’/forum/?’.$_SERVER[‘QUERY_STRING’];
}

/*
теперь необходимо зайти на страницу форума и посмотреть ее в коде
видно что ссылки выдаются так
<a href=»/forum/?p=1&amp;f=1&amp;w=htm»>Общение</a>
для работы грабба достаточно изменить ссылку так
<a href=»index.php?p=1&amp;f=1&amp;w=htm»>Общение</a>
что и сделаем в функции process
*/

/*function process($s)
{
$s=str_replace(‘<a href=»/forum/’,'<a href=»index.php’,$s);
return $s;
}*/

//можно в принципе запускать (ПЕРВЫЙ ЭТАП)
$s=data($path,$host);

//обрабатываем (ВТОРОЙ ЭТАП)
$s=process($s);

//выдаем результат (ТРЕТИЙ ЭТАП)
/*
третий этап не так прост как кажется, если вы граббите загрузки, то
необходимо организовать переадресацию на прямую ссылку с контентом
*/
header(‘Content-type:text/html;charset=utf-8’);
echo $s;

/*
как видим, граббер вполне работает, только не грузятся смайлики,
давайте подкорректируем это и впишем свой копирайт на страницу
*/

function process($s)
{
$s=str_replace(‘<a href=»/forum/’,'<a href=»‘.$_SERVER[‘SCRIPT_NAME’],$s);

//смайлы
$s=str_replace(‘<img src=»‘,'<img src=»http://wen.ru/’,$s);

//копирайт
$s=str_replace(‘</body>’,'<div>(c)snippets</div></body>’,$s);

return $s;
}

/*
разумеется, вы не сможете написать в тему или создать ее, тут надо использовать
POST запросы, задача этой статьи не создание флудер-скрипта а ознакомление с
принципами написания грабберов.
*/

?>

Добавил: TorchWood (14 янв 2009 г., 11:59)

Рейтинг: (2)

Прочитано: 19502

DenVeR[0] (Off)
[14.03.09, 0:24]

Подскажите, кто знает методы написания граба, выложите примеры…

вот вам грабер моего сайта(главной страницы тока)

Цитата:
»

<?php

$file = file(«http://csay.wen.ru?$QUERY_STRING»);

$file = @implode («»,$file);

$file = str_replace(»,»,$file);

echo $file;

?>

«

Кто может помоч с написанием?Пишите на 975323

KILLER[16] (Off)
[06.05.09, 15:47]

А че это такое

toxa[18] (Off)
[12.05.09, 18:16]

УЧИМСЯ ПИСАТЬ ГРАБЕРЫ

Итак начнем.В этой статье мы будем учиться писать простые граберы без использования 80 порта. Первое что нам нужно это сайт который мы хотим ограбить.После того как мы найдем такой создаем такой же файл как и на сайте который хотим ограбить. В этом файле прописываем такое

<?php

$file = file(«http://сайт_который_грабим?».$_SERVER[‘QUERY_STRING’]);

$file = @implode («»,$file);

echo $file;

?>

В принципе на этом можно закончить,но там осталась реклама которая нам не к чему.

Вырезаем рекламу:

Рекламу можно вырезать разными способами мы рассмотрим самые используемые. Первый:

$file = str_replace(‘то что вырезаем’,’вставляем своё’,$file);

Если не нужно вставлять ничего значит вторые скобки оставляем пустые. Второй способ: Например нам нужно вырезать всю шапку в странице прописываем так

$file =preg_replace(‘/<!DOCTUPE html(.*?)<body>/si’,»,$file);

Таким образом можно вырезать и ссылк с изменяющимся адресом. Например такая ссылка

http://

Пропишим так

$file = preg_replace(‘/<a href=»http://playfon.ru(.*?)</a>/si’,»,$file);

И все ссылки которые будут начинаться http:// вырежутся. Но не забываем что во втором случае нужно ставить обратный слеш » » перед таким слешем » / » Чтобы вставить свою шапку и ноги в грабер прописываем include ‘header.php’; Ноги же сайта инклудим ниже этой надписи

echo $file;

include ‘footer.php’;

Ну вот в принципе и всё что нужно знать при написании грабера.

Научите грабы делать!

спс !!! щас буду пробывать писать)

Alex_us[19] (Off)
[19.05.09, 21:51]

Вот прога для создания грабов «Прога»

qwerty[29] (Off)
[28.05.09, 0:02]

спс, щас буду учиться писать грабы, давно хотед

Ничего сложного если научитесь

Ответить на тему

Сохранить в txt

Обсуждение темы «Грабберы. Способы написания.» на форуме. Многих может интересовать тема «Грабберы. Способы написания.», у нас вы можете высказать свои мнения по данному вопросу, почитать мысли других по этой теме, найти ответы на вопросы. Каждое мнение важно, на нашем форуме полная свобода мыслей и мнений, так как мобильный форум на портале Вэшок создан именно для этого! Также у нас есть множество других тем, вам достаточно только посетить главную страницу нашего форума. Не забывайте комментировать, писать ответы и посты на тему «Грабберы. Способы написания.», а также создавать свои темы на форуме. Также у нас есть мобильный чат созданный, как и форум, специально для мобильных устройств и адаптирован для смартфонов

Каталог сайтов mstat.info

Как написать граббер

<?php
/*
*Как написать граббер.
*автор: nc_soft
*28.09.07
*/
/*
Любой граббер для удобства можно разделить на ТРИ оcновных части-этапа:
-получение
-обработка
-выдача
Получение.
Для того, что бы граббер нормально функционировал необходимо написать функцию для получнения
страницы с удаленного хоста по заданному url, надежнее пользоваться сокетами
(потому что библиотека CURL установлена не везде и не всегда, использовать file_get_contents()
и комбинации implode('',file(..)) конечно тоже можно, просто сокет предоставляет побольше возможностей.
Напишем функцию получния страницы по урл.
*/
function data($path,$host)
{
/*
$path путь к файлу скрипта, а так же передаваемые параметры
$host сграббливаемый хост (например, sasisa.ru)
*/
$fp = fsockopen($host, 80);
if (!$fp)
{
die('ошибка');
}
else
{
$out = "GET $path HTTP/1.0rn";
$out .= "Accept: image/gif, application/xhtml+xml, */*rn";
$out .= "Accept-Language: rurn";
$out .= "Host: $hostrn";
//прикинемся оперой-мини
$out .= "User-Agent: Opera/8.01 (J2ME/MIDP; Opera Mini/2.0.4509/1716; ru; U; ssr)rn";
$out .= "Cache-Control: no-cachern";
$out .= "Connection: Closernrn";
fwrite($fp, $out);
$headers = "";
while ($str = trim(fgets($fp)))
$headers .= "$strn";
$body = "";
 while (!feof($fp))
$body .= fgets($fp);
fclose($fp);
}
//возвращаем данные
return $body;
}
/*
Итак, функция для получения страницы готова, теперь составим функцию для обработки данных, тоесть для
выреза рекламы, подмены ссылок итп
*/
/*
function process($s)
{
Здесь сложно дать какие-то рекоммендации, все "грабберописание" состоит в основном в
придумывании этой функции, сделаем пока что "заглушку" на этом месте
return $s;
}
*/
/*
Для корректной работы грабба необходимо теперь правильно определять переменную $path, для примера давайте граббить
всем известный http://wen.ru/forum/index.php
пример очень характерный, потому что многие "потенциальные жертвы" грабов (загруз центры например)
состоят как раз из одного файла
*/
//с хостом определились
$host='wen.ru';
if (empty($_SERVER['QUERY_STRING']))
{
//начальная позиция
$path='/forum/index.php';
}
else
{
//новые параметры
$path='/forum/?'.$_SERVER['QUERY_STRING'];
}
/*
теперь необходимо зайти на страницу форума и посмотреть ее в коде
видно что ссылки выдаются так
<a href="/forum/?p=1&f=1&w=htm">Общение</a>
для работы грабба достаточно изменить ссылку так
<a href="index.php?p=1&f=1&w=htm">Общение</a>
что и сделаем в функции process
*/
/*function process($s)
{
$s=str_replace('<a href="/forum/','<a href="index.php',$s);
return $s;
}*/
//можно в принципе запускать  (ПЕРВЫЙ ЭТАП)
$s=data($path,$host);
//обрабатываем (ВТОРОЙ ЭТАП)
$s=process($s);
//выдаем результат (ТРЕТИЙ ЭТАП)
/*
третий этап не так прост как кажется, если вы граббите загрузки, то
необходимо организовать переадресацию на прямую ссылку с контентом
*/
header('Content-type:text/html;charset=utf-8');
echo $s;
/*
как видим, граббер вполне работает, только не грузятся смайлики,
давайте подкорректируем это и впишем свой копирайт на страницу 
*/
function process($s)
{
$s=str_replace('<a href="/forum/','<a href="'.$_SERVER['SCRIPT_NAME'],$s);
//смайлы
$s=str_replace('<img src="','<img src="http://wen.ru/',$s);
//копирайт
$s=str_replace('</body>','<div>(c)snippets</div></body>',$s);
return $s;
}
/*
разумеется, вы не сможете написать в тему или создать ее, тут надо использовать
POST запросы, задача этой статьи не создание флудер-скрипта а ознакомление с
принципами написания грабберов.
*/
?>

URL: https://visavi.net/articles/41

LED

Хочу предложить проект для повторения. Это комплекс, который содержит в себе кодграббер, пакета-анализатор и циничную глушилку, которая валит весь эфир на 433.92мГц. Проект выполнен на микроконтроллере PIC18F252 и LCD 3410(3310,5110).
P.S (все файлы для создания в архиве)

Комплекс предназначен для исследовательских целей, он позволит понять кое какие принципы работы охранных систем, также поможет разоблачить не добросовестных производителей авто-сигнализаций. Давайте я по подробней опишу, как все работает.

Начну с меню кодграббера, при включении прибора, на дисплее появится надпись «ВВЕДИТЕ КОД». Внизу мы увидим поле для его заполнения, курсор будет установлен на первую ячейку. Код состоит из 6 ячеек, вводимое значение будет от 0 до F. Думаю, для продвинутых юзеров не стоит объяснять, что пароль трех байтный, а это 256 умноженное на 256 и умноженное на 256 комбинаций, всего 16777216 комбинаций. В случаи неверного ввода, загорится надпись «ОШИБКА», которая будет моргать, после некоторого времени, устройство перейдет в запрос кода. По этому, кроме вас ни кто кодграббер не включит. После ввода пароля, загорится надпись «КОД ПРИНЯТ» и наш адрес «WWW.PHREAKERCLUB.COM». Далее через несколько секунд, включится основное меню.
Меню будет содержать три закладки «КОДГРАББЕР» «АНАЛИЗАТОР» «ПОМЕХА» и логотип сайта. Нужную функцию мы будем выбирать джостиком-курстором, который будет сделан из пяти кнопок. Перемещая кнопкой стрелки указатели, мы выбираем любую из трех функций. Чтобы включить выбранную функцию, мы нажимаем кнопку в середине джойстика.
Например, мы выбрали функцию «ПОМЕХА», на дисплее загорится надпись «РЕЖИМ ПОМЕХИ» «ЧАСТОТА 433.92» «МОДУЛЯЦИЯ» и «50 ГЦ». Чтобы переключить частоту модуляции глушения эфира, нужно джойстиком нажать вниз, шаг регулировки помехи 50Гц, ее можно менять от 50Гц до 600Гц. Что бы выйти в основное меню, можно нажать любую из боковых кнопок джойстика, левую или правую.
Режим анализатора включается аналогично, просто наводим стрелки и жмем джойстик в середину. После входа в это меню, нас ждет небольшая анимация, сверху в низ начнут появляться знакомые вам надписи,

Приемник PORTC,5 -16 нога контроллера.
Передатчик PORTC,6 -17 нога контроллера.

Показать скрытое содержание
Центральная кнопка джойстика PORTB,0 — 21нога контроллера.
Вверх PORTB,1 – 22 нога контроллера.
Вниз PORTB,3 – 24 нога контроллера.
Вправо PORTB,2 – 23 нога контроллера.
Влево PORTB,4 – 25 нога контроллера.

Питание LCD только от контроллера.
Питание LCD PORTC,0 — 11 нога контроллера.
Ресет LCD PORTC,1 — 12 нога контроллера.
Линия DC в LCD PORTC,2 -13 нога в контроллере.
Линия данных в LCD PORTC,3 – 14 нога в контроллере.
Линия тактирования в LCD PORTC,4 -15 нога в контроллере.

Сама Схема:



Печатная плата в Slayout’е прямиком в корпус нокии 3310

Источник

Кодграббер из брелка Starline своими руками


Код-граббер – устройство, позволяющее перехватить сигнал любых систем сигнализации считать код, который затем можно использовать для снятия блокировки замков, зажигания и других механизмов автомобиля. Приобрести можно его в интернете, на рынке любого города. В зависимости от типа устройства, код-граббер может подходить под несколько десятков модификаций сигнализаций.
В интернете существуют десятки код-грабберов, которые выполняют несколько функций:

  • перехват алгоритмического кода сигнализации;
  • снятие блокировок и отключения сигнализации;
  • включение сигнализации;
  • включение зажигания и двигателя;
  • отключение двигателя и его включение.

Сигнализация STARLINE и ее функции для противоугонных систем

Сигнализация, как сообщают производители, имеет ряд особенностей, которые не допускают несанкционированный запуск двигателя и отключение сигнализации.

Starline имеет несколько зон защиты:

  • включается реле блокировки двигателя;
  • выключения дверей, капота багажника
  • установлены датчики, реагирующие на разбитие стекла.
  • усовершенствованна система контроля.
  • устанавливается блокировка ручного тормоза.


Как сообщается в инструкции системы Starline, есть сведения о защищенности сигнализации от взломов. Так система имеет:

  • защиту сигнала от перехвата сигнала алгоритмическим кодом;
  • сигнал тревоги с ограниченным количеством циклов;
  • прерывание сигнала тревоги без выключения блокировки основных зон автомобиля;
  • Индивидуальный код доступа для отключения;
  • Сохранение настроек системы сигнализации, в случае отключения питания.

Есть несколько функций Starline, которые могут ввести угонщика в заблуждение:

  • Система антиограбление и с имитацией неисправности зажигания и двигателя;
  • Режим «паника»;
  • Блокировка двигателя;
  • Световые и звуковые тревоги водителя.

На чем основывается действие код-граббера

Если раньше код-граббер перехватывал сигнал на основании длинных или коротких импульсов. Сейчас, в связи разработчики противоугонных систем, в том числе, и сигнализации Starline создают системы с динамическим кодом.

Код-граббер также прошел эру эволюции, и так появились датчики «с замещением». Такой прибор имеет более сложный принцип работы. При возникновении кода, исходящего от брелка владельца к охране автомобиля, код-граббер записывает этот код, при этом блокирует его допуск к машине. Благодаря этому угонщик может снять сигнализацию. Если это удалось сделать, замки можно разблокировать и отогнать машину в укрытие. На месте открывается капот, меняется компьютер под капотом, приборная панель и компоненты автомобиля, в которых прописывают чип ключа. После того, как эти компоненты заменены «на свои» автомобиль можно заводить своим ключом.

Не обязательно взлом сигнализации Starline может сопровождаться использованием код-граббера. Есть другой способ, более грубый, его в народе так и называют ломовой. Грабители включают генератор рабочей частоты, который создает помехи работы системы включения зажигания. Владелец автомобиля попросту не может включить сигнализацию, и в конце-концов, оставляет автомобиль, закрывая его на ключ без включенной системы защиты.

Дождавшись, пока водитель уйдет, грабители производят обычный взлом замка и угоняют автомобиль в место укрытия. Но ломовой метод в наши дни редко срабатывает, поэтому лучше изучить вопрос по взломам при помощи код-граббера.

Кодграббер: что это, виды, способы защиты

С появлением электронных кодовых замков появились устройства для считывания и перехвата кода открытия таких замков, это — кодграббер (code grabber). Код граббер, он же граббер интересен не только угонщикам автомобилей, но и тем, кто хочет получить доступ к проезду, то есть использовать граббер для открытия шлагбаумов.

Code Grabber — что это?

Кодграббер для авто применяется для обмана электронной системы защиты от угона транспортного средства. Такие средства придуманы изначально с хорошей целью — получать доступ к автомобилю сотрудникам сервисных служб в случае поломок и отказа сигнализации подчиняться командам брелка.

Затем их начали приобретать угонщики самих машин или просто для открытия авто и кражи различных вещей, находящихся в салоне.На крупных стоянках стоят люди с устройствами кодграбберами и ждут, когда владелец автомобиля нажмет на кнопку постановки сигнализации.

Они также активируют граббер в момент активации автомобильной сигнализации и электронное устройство «вор кода» запоминает посылаемый брелком код, которым можно воспользоваться потом для вскрытия авто.

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

Так как радиус действия кодграббера 150 метров, то поймать человека с граббером трудно, тем более в центре густонаселенного города.

Грабберы для машин бывают 3 видов:

  • Кодграбберы сканеры сигнализаций. Такие модификации считывающих устройств стоят недорого. Они могут ловить только статический код (код, которые не меняется).
  • Auto grabber, который использует код-подмену. Такой граббер имеет спец генератор помех, способный глушить код.
    Принцип действия его основан на том, что в момент, когда владелец авто вышел из машины, хочет поставить авто на охрану, нажимает кнопку на родном брелке сигнализации, граббер глушит его код и подменяет этот код своим.
  • Внимание! Если при постановке машина на сигнализацию и она не сработала с первого раза, а сигнализация активизировалась только со второго и последующих нажатий, то возможно, код был перехвачен.
  • Кодграббер алгоритмический. Это воровское устройство может открывать более дорогие сигнализации, которые основаны на работе диалоговой схемы.

Насколько может быть эффективный код-граббер для взлома автомобиля

Интернет насыщен предложением приобретения код-граббера. Есть статьи, видеоролики о кодграбберах, при помощи которых можно совершить взлом любой сигнализации, вплоть до самой последней модели Starline и даже систем защиты, находящихся в стадии разработки. Для покупки такого прибора, владельцы сайтов и соответствующего товара требуют предоплату. Если получают часть сумы, то товар «забывают» отправить по почте.

Кстати, стоит код-граббер в зависимости от функционала от 25 до 100 тыс. рублей. При этом цена не всегда оправдывает качество.

Ряд видеорепортажей показывают обратную сторону медали, когда код-граббер дает сбой и не может разблокировать сигнализацию. Разработчики начинают объяснять подобный сбой тем, что сигнализация Starline является новинкой и код-граббер пока не может ее определить, а потому и взлом невозможен.

Таким образом, разработчики угонных систем создают не всегда эффективные средства отключения сигнализации, включения зажигания и т.д, но желание заработать десятки тысяч рублей заработать на неэффективном изобретении берут верх. К тому же всегда могут найтись покупатели, желающие легкой наживы.

Кодграббер — теперь с автозапуском!

Как только мы выходим из автомобилей, обязательным ритуалом является нажатие кнопки автосигнализации. Моргание габаритов, характерный звук, дублирующийся мгновением позже на брелоке, — и мы спокойно отправляемся по делам, не задумываясь о сохранности машины. А между тем прогресс не останавливается, и даже взлом автомобиля стал настолько технологичным, что весь процесс вскрытия занимает меньше минуты, а сам злоумышленник может находиться до 100 метров от «объекта» взлома. И это не телепатия, достаточно иметь при себе специальное устройство — «кодграббер».

Совсем недавно в Новосибирске были задержаны 4 злоумышленника, с помощью хитроумного устройства вскрывшие автомобиль Mazda, в то время как хозяин отправился в магазин. Молодые люди похитили лежавший в салоне ноутбук, поставили автомобиль обратно на сигнализацию и скрылись с места происшествия, однако вскоре их автомобиль был задержан оперативниками УВД. Конфискованный у преступников «кодграббер» — небольшое устройство, внешне выглядевшее как обыкновенный брелок от сигнализации, способно взломать практически любую сигнализацию. При этом злоумышленник, как правило, может пользоваться всеми функциями данной сигнализации, будь то открытие или закрытие автомобиля или багажника, отмена звукового сигнала или даже автозапуск.

Принцип работы кодграббера основывается на перехвате запроса кода с родного брелка, даже при отсутствии самого авто рядом — к примеру, это может быть команда «закрыть автомобиль». После перехвата пакета кодов, «Алгоритмический» кодграббер создает цифровой аналог брелка и сохраняет его во внутреннюю память -процессора. Таким образом, после перехвата кода сигнализации кодграббер становится полноценным брелоком сигнализации. А также единственным, так как сигналы от автомобиля идут только на кодграббер, который блокирует сигнал, идущий на брелок владельца, уже не регистрирующий никаких изменений. Получается, можно взломать сигнализацию одним нажатием кнопки, а владелец автомобиля ничего не будет знать.

Обычно злоумышленники с помощью кодграббера просто похищают ценные вещи из автомобиля, не занимаясь взломом иммобилайзера с целью угона. И поймать такого злоумышленника очень трудно, ведь владелец находится в неведении, а со стороны все выглядит так, как будто злоумышленник является хозяином автомобиля, открывающим автомобиль брелоком и забирающим нужные ему вещи. Обычно внешне кодграббер полностью совпадает с брелоком от сигнализации популярных моделей, его можно без опасений носить с собой в кармане.

Кроме того, законодательством Российской Федерации кодграбберы официально не запрещены, поэтому каждый человек может его приобрести через интернет — якобы в целях проверки сигнализаций в специализированном СТО. К примеру, подобное устройство пригодилось бы автомеханикам, страховым агентам и другим людям, чей вид деятельности связан с защитой автомобилей. На одном сайте, занимающемся открытой продажей кодграбберов, можно увидеть следующий текст: действующему законодательству РФ, да и СНГ в целом производство, сбыт, хранение и приобретение данного устройства не противоречат! Это прекрасно понимают сотрудники милиции, также как и органы исполнительной власти, это известно и всем остальным деятелям. Не надо быть юристом, чтобы понять данный вопрос, поэтому встреча с покупателем и демонстрация работы прибора так же невинна, как прогулка по осеннему парку в вечернее время суток.

Вот что вы в дальнейшем будете с ним делать — это уже вопрос… Баловаться им, работать на автосервисе или еще что-то… Это уже на совести каждого человека, обладающего данным девайсом….» Как видно из этого рекламного текста, приобрести кодграббер можно без проблем, лишь прочитав соглашение, состоящее из двух пунктов. 1. Продается гражданам с 18 лет, соблюдающим законы страны, в которой находитесь. 2. Вы соглашаетесь применять алгоритмический кодграббер в целях тестирования автомобильных охранных систем, не противореча законам вашей страны. То есть, де-факто, любой может заполучить кодграббер и использовать его для взлома автомобилей. Однако раньше стоимость подобного устройства начиналась от трехсот тысяч рублей, и приобрести его мог далеко не каждый. Сейчас стоимость кодграбберов начинается меньше чем со ста тысяч рублей и возрастает в зависимости от количества сигнализаций, которое может это устройство взломать. Наиболее дорогие и продвинутые кодграбберы способны взломать практически любые сигнализации, а также способны запоминать до пяти кодов различных сигнализаций. Их стоимость начинается от тех же трехсот тысяч рублей.

Сейчас в Новосибирске, по статистике ГУВД, в день случается до восьми случаев взлома автомобилей с помощью кодграб-бера, и злоумышленников в таких случаях как правило достаточно трудно найти. По словам Алексея Кудрина, сотрудника , в последнее время количество взломов машин с помощью кодграббера действительно увеличилось, и не редко к ним в компанию поступают звонки от пострадавших автолюбителей с вопросом «Что делать дальше»? Скорее всего, активность злоумышленников связана именно с понижением стоимости подобных устройств.

Чтобы защитить свой автомобиль от взлома, стоит не поскупиться и установить на свой автомобиль сигнализацию с диалоговым кодом. Подобные системы охраны используют кодировку, недоступную для перехвата кодграббером, поэтому взлом автомобиля дистанционно с сигнализацией, использующей диалоговый код, невозможен.

Стоимость таких сигнализаций начинается от 4-8 тысяч рублей и выше, не считая установку. Кроме того, для безопасности надо просто забирать все ценные вещи из автомобиля. Как правило, кодграббером пользуются для воровства ценных вещей из салона автомобиля. Так что если злоумышленники не обнаружат в салоне вашей машины достойного объекта для наживы, то желания ограбить ваш автомобиль, возможно, не появится. Так что будьте внимательны, и в таком случае ваше имущество останется с вами,

журнал Трансервис №10 2010г.

ВАШИ КОММЕНТАРИИ:

Как защитить машину от угона при помощи имболайзера Старлайн. Обходчик системы

Под имобилайзером подразумевается устройство для обездвиживания автомобиля во время угона. Проблема в том, что иммобилайзер может не только защитить ваш автомобиль, но и мешать, например, в установке автозапуска сигнализации.

Для такого устройства придуман обходчик, позволяющий даже без ключа запускать двигитель автомобиля.

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

Минус. Предполагая, что на автомобиле установлен обходчик, угонщики могут воспроизвести взлом авто.

Хотя, как заявляют эксперты, каждый обходчик подходит только к индивидуальному ключу. Тем не менее, есть гроза, что устройство могут подобрать. В связи с усовершенствованием технологии сигнализации и перехода с 40-битного на 80 битный шифр, обходчик подобрать в наши дни значительно труднее.

Источник

➤ Adblock
detector

Понравилась статья? Поделить с друзьями:
  • Как написать свой граббер
  • Как написать свой голосовой помощник
  • Как написать свой гимн
  • Как написать свой впн
  • Как написать свой возраст на английском