#python #python-3.x #django #re
#python #python-3.x #django #python-re
Вопрос:
Недавно я запустил веб-приложение на основе Django и был очень доволен его результатами. Я также включил функцию в Django, с помощью которой вы можете отправлять электронные письма МЕНЕДЖЕРАМ для 404-х, добавив промежуточное 'django.middleware.common.BrokenLinkEmailsMiddleware'
программное обеспечение . Однако с тех пор, как я это сделал, я получаю МНОГО спам-запросов, достигающих 404-х годов. Я не уверен, являются ли они ботами или что, но это информация, которую я получаю от Django:
Referrer: http://34.212.239.19/index.php
Requested URL: /index.php
User agent: Mozilla/5.0 (Windows; U; Windows NT 6.0;en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6)
IP address: 172.31.23.16
Почему я получаю запросы на URL-адреса, которых нет на моем сайте, и есть ли способ отфильтровать запросы, чтобы я не получал от них электронные письма? Эти URL-адреса никогда не существовали на моем сайте (мой сайт запущен совсем недавно). Я получаю примерно 50-100 писем в день от спам-запросов на мой сайт.
Комментарии:
1. Может быть, ограничить отчеты определенными реферерами?
Ответ №1:
Я не могу представить автоматический способ фильтрации спама, поскольку несуществующий URL-адрес неотличим от URL-адреса спама, но вы можете отфильтровать обычных подозреваемых, используя IGNORABLE_404_URLS
:
Список скомпилированных объектов регулярных выражений, описывающих URL-адреса, которые следует игнорировать при сообщении об ошибках HTTP 404 по электронной почте (см. Отчет об ошибках). Регулярные выражения сопоставляются с полными путями запроса (включая строку запроса, если таковая имеется). Используйте это, если ваш сайт не предоставляет часто запрашиваемый файл, такой как
favicon.ico
илиrobots.txt
.
Например:
import re
IGNORABLE_404_URLS = [
re.compile(r'.(php|cgi)
),
re.compile(r'^/phpmyadmin/'),
]