Рубрики
Без рубрики

Кто -то украл мою статью Dev! Как построить сценарий Python для обнаружения украденного содержания

Прошлой весной один из моих постов в блоге получил много просмотров и лайков, и в конечном итоге был показан на … Tagged with Python, Tuperial, Codenewbie.

Прошлой весной один из моих постов в блоге получил много просмотров и лайков, и в конечном итоге был показан в списке лучших 7 за эту неделю. Как новый блоггер, я хотел выяснить, что сделало его таким популярным, чтобы я мог опираться на этот успех. Однако в процессе расследования я наткнулся на свое собственное письмо … В чужом блоге !!! А потом я также наткнулся на их 12 учетных записей в Твиттере, которые все писали в Твиттере моего контента, и принимали кредит за его собственную работу !!! Замечательные люди из Dev помогли мне и разослали просьбу об удалении украденного контента … но с тех пор я нервничал по поводу публикации, опасаясь, что это может случиться снова.

Перенесемся на несколько месяцев, и моя работа включает в себя задачу создания сценария Python для поиска веб -контента, который можно использовать для мошенничества. Я сразу же понял, что аналогичный сценарий может быть использован для мониторинга Интернета, чтобы обнаружить любые несанкционированные царапины и повторное публикацию постов DEV. Я также недавно прочитал сообщение @saschat, получу историческую статистику для ваших статей Dev.to, в которых используется API dev.to для получения данных в каждой из ваших статей. Поэтому я приступил к работе, создав сценарий, который использует как Dev.To API для получения данных моей статьи, а также API поисковой системы Google для управления пользовательскими поисками.

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

Начальная настройка

Создать папку проекта и репозиторий

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

Мы организуем наши зависимости в Требования.txt файл. В этом проекте мы начнем с установки Запросы пакет (для запроса данных из API) и Colorama Пакет (для форматирования текста, напечатанного на терминал). Добавьте эти имена в файл и запустите PIP3 Установка -R Требования.txt установить все зависимости одновременно.

Настройка API поисковой системы Google пользователь

Чтобы использовать этот API для управления пользовательскими поисками, вам потребуется учетная запись Google. Перейдите по ссылке на Google Custom Search JSON API документация Чтобы настроить ключ API для вашего проекта и записать его. Затем нажмите на Google программируемый панель управления поиском Ссылка для настройки пользовательского поиска и создания идентификатора поисковой системы. Вам нужно будет выбрать хотя бы один домен веб -сайта, чтобы включить в свой поиск, так что пока просто установите его на dev.to/* и любые другие сайты, где ваши статьи должен Появляйтесь в веб -поиске. Поскольку я публикую свои статьи в Twitter (а иногда и в LinkedIn и Github), я также добавил эти домены. Это заставит нас начать тестирование сценария, и мы можем добавить/уточнить пользовательские параметры поиска, как только мы уверены, что сценарий работает.

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

Установите Dev.to API

Затем вам нужно будет получить ключ API для Dev.to API. Чтобы сделать это, перейдите на страницу настроек разработки, нажмите на учетную запись и прокрутите в раздел Keys Dev API. Просто добавьте заголовок проекта, и он генерирует новый ключ. Запишите и этот ключ. Для получения более подробной информации посетите Документация для Dev API Анкет

Сохраните клавиши API и идентификатор поисковой системы для config.py

Во -первых, убедитесь, что вы добавили config.py файл в ваш .gitignore Файл, чтобы предотвратить его отслеживание GitHub. Далее добавьте все ключи и идентификаторы, которые вы только что сгенерировали в config.py Файл, чтобы сохранить их в безопасности.

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

Если вам нужен ресурс по обеспечению ключей API, я рекомендую статью BlackTechdiva Скрыть ключи API Для четкого и краткого урока.

Получить данные статьи из dev.to api

Теперь мы готовы начать работать за эти ключи API! Во -первых, мы сделаем привлечение к Dev.to API, чтобы получить все наши статьи, опубликованные на DEV, а затем использовать данные ответа для создания списка заголовков статьи, которые мы сможем использовать в нашем пользовательском поиске.

В search.py Файл, нам нужно будет Запросы на импорт , что позволит нам запросить данные из dev.to api. Мы также будем Импорт конфигурации чтобы мы могли получить доступ к нашему клавишу API, который локально хранится в этом файле.

Наш запрос вернет данные нашей статьи в этом формате:

Проходя через объект данных, мы затем создаем список названий всех опубликованных статей (article_list), получив доступ Статья ["Название"] Анкет Мы также можем создать список недавних_артий, чтобы мы могли провести поиск на подборе из десяти самых последних статей (недавние_аттилы):

Создайте общий поисковый скрипт

После того, как у нас будет список статей, мы готовы настроить общий поисковый скрипт, который будет использовать каждый заголовок статьи в качестве поискового термина, и распечатать 10 лучших хитов Google (на основе настройки в нашей пользовательской поисковой системе) на терминал.

Во -первых, мы импортируем и инициируем Colorama, что позволит нам добавить форматирование цвета к результатам нашего поиска, когда они распечатаны на терминал. Аргумент AutoReset = Верно Устанет цвет обратно по умолчанию после каждой строки.

Далее мы настроим нашу логику поиска. Нам нужно будет выполнить перечисление через список недавних статей и сделать запрос на API Google пользовательского поиска для каждого заголовка. Ответ для каждого поиска заголовка статьи будет большим словарем, и хиты будут размещены внутри ключа «предметов». Мы можем установить переменную Hits, чтобы включить 10 лучших попаданий, индексируя результаты.

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

ПРИМЕЧАНИЕ. До сих пор в этом примере я ограничил список недавних_артий 10 статей, а список хитов – 10 хитами. Это основано на пределах ежедневных запросов API, которые допускают 100 запросов в день. Не стесняйтесь корректировать эти цифры, но помните о ежедневном ограничении, когда вы делаете свой выбор. Более подробную информацию о ежедневном лимите можно найти в документация .

Когда мы запустим сценарий в этот момент, мы получим распечатку из 10 лучших попаданий для каждого из 10 заголовков статьи, из любого из доменов, которые мы определили в нашей панели управления пользовательским поиском Google во время более раннего шага. В моем примере моя распечатка показывает ссылки на мои статьи на Dev.to, Twitter, LinkedIn и GitHub. Например:

Сделать все это вместе

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

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

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

Последние мысли

Определенно требуется некоторая пробная и ошибка, чтобы уточнить программируемые настройки поиска Google на вашей панели управления – вам нужно найти сладкое место между исключая Ваши собственные посты и акции и в том числе Другие области и ссылки других людей на вашу работу. Затем вам придется вручную просмотреть вывод поиска. Большинство ваших хитов будут безвредны, как первые два выше – люди (или боты), которые находят и любят вашу работу, поделятся! Но вы также можете обнаружить сайты, которые соскребили ваше письмо и повторно опубликовали его, не приписывая их вам, и об этом должны сообщать сайты, с запросом на удаление украденного содержания.

Попробуй это!

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

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

Проверьте репозиторий

Спасибо за чтение! Если вы хотите проверить мою репо, вы можете проверить это Здесь Анкет

Ресурсы

Поскольку вся эта статья сосредоточена на защите интеллектуальной собственности, важно отдать должное, если кредит должен! Я использовал следующие ресурсы, чтобы помочь собрать этот проект:

Оригинал: “https://dev.to/jessesbyers/someone-stole-my-dev-article-how-to-build-a-python-script-to-detect-stolen-content-54fg”