Pull to refresh
21
0
Антон @Assargin

Python-разработчик

Send message

Автоматический отстрел граберов или как избежать автоматического сграбления сайта

Reading time2 min
Views1.1K
Я администратор доски объявлений и видимо усилия по поддержанию уникального контента (TBD – тема отдельного типика) не проходят зря т.к. я заметил нехорошую тенденцию к сграблению объявлений через RSS ленту, разбор html-страниц сайта т.е. контент серым личностям нравиться.

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

Первый и действенный метод борьбы – посмотреть в ping IP сайта, ворующего контент и заблокировать его, что помогало только первое время. Но иногда мне просто нехватало времени на выявление «воришек», да и некоторые сайты стали добавлять использование прокси-серверов.

Как настоящий программист я принялся искать автоматизированное решение и быстро нашел его. Достаточно вспомнить, что одним из важнейших различий вэб-сервера и компьютера пользователя в сети Интернет является наличие у сервера открытых портов, обслуживаемых HTTP/SMTP/POP-серверами. Т.е. если недопускать копирование контента с IP имеющих открытые наружу порты, то это будет хорошее препятствие.

Чтобы начать выявлять серых личностей и их сайты оказалось достаточно такого PHP-кода:

//$ip – это может быть $_SERVER["REMOTE_ADDR"] и $_SERVER["HTTP_X_FORWARDED_FOR"]
$fp = @fsockopen($ip, 80, $errno, $errstr, 1);
if( $fp !== FALSE )
{
//тут логируем, что данный IP имеет открытый HTTP-порт т.е. вероятно это сервер
}


Следует обратить внимание, что поле HTTP_X_FORWARDED_FOR устанавлиается в случае, если пользователь ходит через обычный прокси. Но это поле может быть и подделкой, поэтому нужно проверять IP как указанное в HTTP_X_FORWARDED_FOR, так и в REMOTE_ADDR.

Поскольку на доске объявлений происходит установка сессии для каждого посетителя, то проверка выполнялась только на 2-м хите для каждого уникального IP.

Пробный запуск скрипта на 1 сутки показал высокую эффективность – 4 сайта-грабителя были выявлены и обезврежены. Отловлено IP с открытым 80-м портов – более 2000! Поэтому для анализа IP использовался WHOIS сервис любезно предоставленный nic.ru и еще один скрипт. Ну что-же, у них защиты от автоматических сканеров нет и хорошо ;)

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

Однако не стоит просто блокировать все IP имеюшие открытые наружу порты. Оказывается существуют домашние сети, где по 80-му порту открывается статистика прокси-сервиса (да, каждому гостю!), где детально перечислен список любимых сайтов этой аудитории с количеством хитов/Мб и кто сколько тянул…

Дополнительная информация:
  1. Для анализа хождений через прокси-сервера следует анализировать порты – 8080, 1080, 3126.
  2. Поиск дубликатов (имею премиум, личное мнение – сервис очень часто не прав) — http://www.copyscape.com/


Прошу Ваши идеи и комментарии в тред!

Современный миф о стабильности. Кризис.

Reading time4 min
Views1.7K
Получив и прочитав свежий номер журнала Результат (постоянный читатель на протяжении 5 лет), я поинтересовался у издателя, можно ли какую-либо статью из него представить на суд хабралюдям, на что получил положительный ответ. Итак, ниже статья, а после мои комментарии…

Современный миф о стабильности.



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

Первое, что бросается в глаза, – это огромный подготовительный период в преддверии «стабильной» жизни. Это период явно больше, чем стабильность, к которой он готовит.

Читать дальше →

Незаменимый помощник для больших дампов MySQL

Reading time1 min
Views1.9K
Когда скрипт Вigdump — незаменим:

Бывают ситуации когда штатных средств недостаточно:
Например необходимо перенести|скопировать базу данных MySQl а размер её дампа уже превысил (даже в упакованном виде) лимиты которые накладывает хостер на загрузку файла или размер POST-запроса.

Тут нам на помощь нам и приходит данный скрипт.

Узнать больше

Разбираемся с вирусными циклами

Reading time2 min
Views802
Встраивание иструментов вирусного распространения в ваши продукты — путь к росту. Понимание вирусных циклов и их оптимизация могут добавить намного большее распространение вашему продукту, чем какая-либо новая фича, рекламная компания или оптимизация кода.

Для примера рассмотрим скорость роста некоторых Facebook-приложений от RockYou типа «кидай овечек своим друзьям»:

image
Читать дальше →

20 критических уязвимостей в программе

Reading time1 min
Views539
Я думаю самая главная ошибка — между креслом и клавиатурой, но если разбирать больше чем «не заметил» и предположить что новички не совсем знают о критических ошибках которые могут вызвать серъёзные последствия типа потери данных, вызова инородного кода, недоступность сервиса или кражи данных, то чёрный список выстроится следующим образом:
  1. Неверная валидация ввода данных
  2. Неправильная кодировка или отсутсвие обработки данных вывода
  3. SQL-инъекция
  4. Cross-site scripting
  5. Неограниченность в консольном доступе (OS-инъекция)
  6. Передача личных данных по малозащищённому каналу
  7. Межсайтовый запрос как подделка внутреннего запроса
  8. Соревнование потоков использующих один ресурс и неверное закрытие его использования
  9. Слишком информативное содержание об ошибке
  10. Выход указателя программы за пределы отведённой памяти
  11. Внешнее управление внутренними переменными и файловыми путями
  12. Генерируемый код и его потенциальная инъекция
  13. Автообновление программы полученным кодом без подтверждения источника
  14. Грязная инициализация — доступны данные предыдущих инициализаций
  15. Математика с ограниченными числами
  16. Ненадёжная авторизация и за-hard-коденые пароли
  17. Использование подверженного риску или взломанному алгоритму криптографии
  18. Исполнение с повышенными привилегиями
  19. Использование недостаточно случайных чисел
  20. Валидация на стороне клиента но не на стороне сервера
Читать дальше →

Управление закачками utorrent'a из ICQ

Reading time1 min
Views681
Бывает так, что добавил множество закачек в utorrent и ушёл на работу, а в это время еще вышли несколько серий твоих любимых сериалов, они автоматически подхватилась по RSS и загружаются совместно с остальными и ты понимаешь, что к твоему приходу домой новая серия любимого сериала просто не успеет скачаться, если не остановить несколько предыдущих закачек.

Читать дальше →

Не надо хороших идей!

Reading time1 min
Views447
image
Есть такая проблема: придумывает человек что-то здоровское — как обойти массу сложностей, потратив мало сил, чтобы всем это удобно было, а на него все сразу шикают, мол, не нужны нам твои замечательные идеи. И если фантазёр является слабым оратором, то все делают «как обычно» — получается медленно, плохо, неэффективно, но надёжно.

Автор: Илья Весенний

Порно для всей семьи: Эпизод I

Reading time1 min
Views2.9K
Режиссер Джеймс Ганн, кажется, сделал нечто гениальное. Ну а если и не гениальное, то истерически смешное. Его с иголочки новый сетевой проект — «Порно для всей семьи» (PG Porn) — впитал в себя самое лучшее, что порножанр может предложить — умопомрачительные сюжеты и запредельную актерскую игру. А самое скучное и, так сказать, механическое — оставил за кадром. И впрямь — ну кому нужен этот секс, когда на экране разворачиваются такие исполненные драматизма страсти?

Первый сюжет под названием Nailing You Wife (про туповатого рабочего и жену его начальника) разыгрывают Натан Филлион и Ариа Джованни. И если дамочка — взаправдашняя порноакриса, то Натан Филлион в очередной раз доказывает свою квалификацию — так классно изобразить ни на что не годного идиота — это надо уметь.

Концовка ролика — приготовьтесь! — во всех смыслах убивает:

Скрещиваем велотренажер с компьютером

Reading time3 min
Views10K
Сломалась у меня однажды компьютерная мышка, и прежде чем ее выбросить, подумал: а не сделать с ней что-нибудь эдакое? Взгляд упал на велотренажер, стоявший рядом, и идея родилась сама собой.

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

15.05 КБ

Компьютер на руле съемный, и от датчика к нему идет провод, заканчивающийся стандартным 3,5 мм моно-миниджеком. Вот и подумал, а что если заставить вращением педалей имитировать нажатие кнопки мыши, подключить мышь к компьютеру и написать какой-нибудь софт (игрушку или что-то еще), чтобы сделать кручение педалей более интересным занятием?
Читать дальше →

Децентрализованный краудфандинг для любых проектов

Reading time10 min
Views22K
Что мне не нравится в краудфандинговых площадках:

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

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

Читать дальше →

Cuckoo – собственная автоматизированная лаборатория анализа вредоносных файлов

Reading time21 min
Views64K
image
Месяц назад портал на моей новой работе был взломан. Руководство задалось вопросом «Как?». В ходе недолгих поисков и анализу подключений к серверам, был найден ПК сотрудника, с которого устанавливалось подключение примерно в то самое время. Сотрудник ничего о взломе не знал, но в ходе беседы вспомнил один случай, ему незадолго до взлома пришёл документ от «сотрудника фирмы», который не открылся. Файл был в формате exe, с этого и началась вся история.
Читать дальше →

Генерация ID для шардинга в MySQL

Reading time5 min
Views26K
Тема шардинга довольно обширная как с точки зрения программиста, так и с точки зрения администратора БД. Я сейчас хочу коснуться только вопросов генерации уникального ID сущности и алгоритмов выбора шарда.
Читать дальше →

Работа с геолокациями в режиме highload

Reading time6 min
Views60K
При разработке ПО часто возникают интересные задачи. Одна из таких: работа с гео-координатами пользователей. Если вашим сервисом пользуются миллионы пользователей и запросы к РСУБД происходят часто, то выбор алгоритма играет важную роль. О том как оптимально обрабатывать большое количество запросов и искать ближайшие гео-позиции рассказано под катом.

image
Читать дальше →

Несколько интересностей и полезностей для веб-разработчика #19

Reading time4 min
Views54K
Доброго времени суток, уважаемые хабравчане. За последнее время я увидел несколько интересных и полезных инструментов/библиотек/событий, которыми хочу поделиться с Хабром.

DC.js



Библиотека позволяет создавать великолепные многоуровневые/масштабируемые кроссплатформенные графики и диаграммы с моментальным перерендерингом при пользовательском взаимодействии. За процесс визуализации отвечает знаменитая d3.js, а за анализ многомерных наборов данных crossfilter.js. Кстати кроссфильтр — проект небезызвестной компании Square.
chart.renderlet(function(chart){
    // smooth the rendering through event throttling
    dc.events.trigger(function(){
        // focus some other chart to the range selected by user on this chart
        someOtherChart.focus(chart.filter());
    });
})


Читать дальше →

HP Vertica, проектирование хранилища данных, больших данных

Reading time8 min
Views33K
UPD: Продолжение статьи по ссылке — habrahabr.ru/company/avito/blog/322510

О чем статья

Незаметно пролетел год, как начались работы по разработке и внедрению хранилища данных на платформе Вертика.
На хабре уже есть статьи про саму СУБД Вертика, особенно рекомендую эту: HP Vertica, первый запущенный проект в РФ, ведь ее автор очень помог нам на начальном этапе. Алексей, спасибо еще раз.
Хотелось бы рассказать о том, какая методология применялась для проектирования физической структуры хранилища, чтобы наиболее полно использовать возможности HP Vertica.
Эту статью хотел бы посветить обоснованию оптимальности выбранной методологии, а в следующей — рассказать о том, какие техники позволяют анализировать данные, содержащие десятки млрд.

Постановка задачи

Рассмотрим высоконагруженный сайт крупной российской интернет-компании (теперь можно — это Авито ;)).
Деятельность компании описывается следующими цифрами: ~ 10 млн. активных пользователей, ~100 млн. просмотров страниц в день, около 1 тыс. новых объектов, размещенных пользователями на сайте в течение 1 минуты, ~10 тыс. поисковых запросов пользователей в минуту.
Грубая оценка количества действий, подлежащих сохранению в хранилище, составляет 100 млн. новых записей в сутки (~100 GB новых данных в сутки).
Т.е. при построении классического хранилища данных с отказом от стирания поступивших ранее данных, объем хранилища через 3 месяца эксплуатации составит 10TB сырых данных. Big Data как она есть.
Нужно построить хранилище, которое хранило бы не меньше 6 месяцев данных, позволяло их анализировать, визуализировать, и отставало бы от реальной жизни настолько мало, насколько это возможно (в худшем случае — отставало бы на день, в лучшем — на минуты).
Вынося сразу за скобки вопрос выбора платформы — хранилище должно работать на HP Vertica, MPP базе колоночного хранения, см. вводную статью в заголовке.
Читать дальше →

HP Vertica, первый запущенный проект в РФ, опыт полтора года реальной эксплуатации

Reading time17 min
Views36K

В качестве вступительного слова


На Хабре и других источниках уже было описание HP Vertica, но, в основном, вся информация сводилась к теории. До недавнего времени в реальной промышленной эксплуатации Vertica использовалась (так как мы называем ее Вертика, предлагаю назначить женский род) в Штатах и немного в Европе, на Хабре же о ней писали ребята с LifeStreet Media. Уже прошло полтора года работы с Vertica, наше хранилище данных содержит десятки терабайт данных. В минуту сервер данных обрабатывает тысячи запросов, многие из которых содержат десятки миллиардов записей. Загрузка данных идет не переставая в реалтайме объемами порядка 150 гб в сутки … В общем я подумал, что стоит восполнить пробел и поделиться ощущениями от езды на реально современных новых технологиях под BigData.

Кому это будет полезно


Думаю, это будет полезно для разработчиков, архитекторов и интеграторов, которые сталкиваются с задачами хранения и аналитической обработки больших данных по объему, содержанию и сложности анализа. Тем более, у Vertica сейчас наконец то есть вменяемая бесплатная полноценная версия Community Edition. Она позволяет развернуть кластер из 3 серверов и загрузить в хранилище данных до 1 тб сырых данных. С учетом производительности и легкости развертывания решений на Vertica, считаю это предложение достойным для того, чтобы его рассмотреть при выборе хранилища данных для компаний, у которых объем данных впишется в 1 тб.

В один абзац о том, как мы выбирали


Кратко без повода к холивару:
При выборе сервера хранилищ данных нас интересовали принципы ценообразования, высокая производительность и масштабируемость работы с большими объемами данных, возможность загрузки данных в реалтайм с множества разных источников данных, легкость стартапа проекта своими силами и минимальная стоимость сопровождения: в итоге по всем этим показателям лучше всего для нас выступила Vertica, победив IBM Netezza и EMC GreenPlum. Последние не смогли полностью удовлетворить всем нашим требованиям. Это могло вылиться в дополнительные издержки на разработку и сопровождение нашего проекта, имеющего не сильно большой бюджет.

Как выглядит Verica с точки зрения архитектора


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

На что влияет техническая архитектура
Читать дальше →

Установка и интеграция solr с django под Ubuntu 12.04

Reading time5 min
Views12K
image image

Введение


Как известно, на многих сайтах/веб-приложениях необходимо тем или иным образом реализовать поиск. Все хотят быстрый и качественный поиск. Разработчики помимо всего прочего хотят, чтобы поисковик был прост в установке и использовании. Так как речь идет о django, то перед нами встает ряд ограничений в реализации поиска (при условии, что в сутках 24 часа и дедлайны никто не отменял). Предлагаю вашему вниманию небольшой туториал о том, как поставить и максимально безболезненно интегрировать в django проект такой мощный поисковик, как apache solr. Всех заинтересованных прошу под кат.

Читать дальше →

ТОП-10 докладов с PyConRu 2013

Reading time4 min
Views12K
Пока суть да дело, мы выбрали для вас самые популярные видео докладов с PyCon 2013. Видеозаписи отранжированы по количеству просмотров видео на нашем канале YouTube

new_logo_white.png"
Читать дальше →

25 Laravel Tips and Tricks

Reading time11 min
Views84K
Было время, достаточно недавно, когда PHP и его сообщество ненавидели. Главная шутка была про то, насколько ужасен PHP.

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

Но позже, на удивление, вещи начали меняться — и достаточно быстро. Как будто пока ведьма помешивала горшочек, из ниоткуда начали появляться новаторские проекты. Наверно, самый заметный проект был Composer: наиболее полный менеджер зависимостей для PHP (как Bundler для Ruby или NPM для Node.js). В прошлом PHP разработчики были вынуждены совладать с PEAR (что было страшным сном, на самом деле), сейчас, благодаря Composer, они могут просто обновить JSON файл, и немедленно подтянуть все нужные зависимости. Здесь — профайлер, там — фреймворк для тестирования. Это занимает секунды.
Читать дальше →

Высоконагруженные сайты и приложения на Python / Django (29 проектов)

Reading time9 min
Views136K
Наша компания довольно давно занимается разработкой больших веб-приложений на Python / Django. В рунете крайне мало информации об этом замечательном языке программирования и фремворке на его основе. Мы решили исправить эту ошибку и рассказать о популярных высоконагруженных сайтах на этой технологии, а также дать много интересных технических подробностей. Для удобства сравнения сайтов между собой мы приводим еще и немного статистики к каждому из проектов. В целом сайтов на Python / Django, конечно, очень много в мире, мы охватим только наиболее интересные по нашему мнению.

Небольшая таблица известных проектов (на основе данных http://builtwith.com/), кликабельно:
Читать дальше →

Information

Rating
9,335-th
Location
Москва, Москва и Московская обл., Россия
Works in
Date of birth
Registered
Activity