Я думаю, что request.head вместо request.get будет более безопасным для вызова при обработке перенаправления URL-адресов, проверьте gitub issue здесь :
r = requests.head(url, allow_redirects=True)
print(r.url)
Нет надежного способа поймать всех ботов. Бот мог бы действовать как настоящий браузер, если бы кто-то этого захотел.
Наиболее серьезные боты четко идентифицируют себя в строке агента, поэтому с помощью списка известных ботов вы можете определить большинство из них. В список вы также можете добавить некоторые строки агента, которые некоторые библиотеки HTTP используют по умолчанию, чтобы ловить ботов от людей, которые даже не знают, как изменить строку агента. Если вы просто регистрируете агентские строки посетителей, вы сможете выбрать те, которые нужно сохранить в списке.
Вы также можете создать «ловушку для плохого бота», разместив на своей странице скрытую ссылку, ведущую на страницу, отфильтрованную в вашем файле robots.txt. Серьезные боты не перейдут по ссылке, и люди не смогут по ней щелкнуть, поэтому файл запрашивает только бот, не соблюдающий правила.
Я думаю, что многие боты могут быть идентифицированы пользовательским агентом, но, конечно, не все из них. Список известных IP - я бы тоже на него не рассчитывал.
Может сработать эвристический подход. Боты обычно намного быстрее переходят по ссылкам, чем люди. Возможно, вы сможете отслеживать IP-адрес каждого клиента и определять среднюю скорость, с которой он переходит по ссылкам. Если это краулер, он, вероятно, сразу же следует по каждой ссылке (или, по крайней мере, намного быстрее, чем люди).
Вы уже добавили robots.txt? Хотя это не решит проблему использования вредоносного бота, вы можете быть удивлены тем, что на вашем сайте уже происходит законная активность ползания.
В зависимости от типа бота, которого вы хотите обнаружить:
Я не думаю, что будет список IP-адресов ботнетов, IP-адреса ботнетов не статичны,и никто не знает, кто такие боты, включая пользователей, которые ведут себя как боты.
Ваш вопрос, возможно, является горячей областью исследований прямо сейчас, мне любопытно, может ли кто-то дать решение этой проблемы.
Вы можете использовать любую технику и понять, человек это или нет, тогда вы можете получить журналы.