diff options
author | rubenwardy <rw@rubenwardy.com> | 2020-07-16 14:35:12 +0100 |
---|---|---|
committer | rubenwardy <rw@rubenwardy.com> | 2020-07-16 14:35:12 +0100 |
commit | 74371d3fcb6731726564f554956f62ff29cab067 (patch) | |
tree | 98ea198bd563e203888722aa2421f7f7b55d1770 | |
parent | 9d3ba8991d2d0ed249398e5bfdb055d566ff9df4 (diff) | |
download | cheatdb-74371d3fcb6731726564f554956f62ff29cab067.tar.xz |
Check user-agent for crawlers before incrementing counters
-rw-r--r-- | app/blueprints/packages/packages.py | 2 | ||||
-rw-r--r-- | app/blueprints/packages/releases.py | 2 | ||||
-rw-r--r-- | app/utils.py | 6 |
3 files changed, 7 insertions, 3 deletions
diff --git a/app/blueprints/packages/packages.py b/app/blueprints/packages/packages.py index bacbbe1..716e79e 100644 --- a/app/blueprints/packages/packages.py +++ b/app/blueprints/packages/packages.py @@ -53,7 +53,7 @@ def list_all(): subqueryload(Package.tags)) ip = request.headers.get("X-Forwarded-For") or request.remote_addr - if ip is not None: + if ip is not None and not is_user_bot(): edited = False for tag in qb.tags: edited = True diff --git a/app/blueprints/packages/releases.py b/app/blueprints/packages/releases.py index 1d11477..278f9aa 100644 --- a/app/blueprints/packages/releases.py +++ b/app/blueprints/packages/releases.py @@ -130,7 +130,7 @@ def download_release(package, id): abort(404) ip = request.headers.get("X-Forwarded-For") or request.remote_addr - if ip is not None: + if ip is not None and not is_user_bot(): key = make_download_key(ip, release.package) if not has_key(key): set_key(key, "true") diff --git a/app/utils.py b/app/utils.py index 38f7ccc..ec5fa3a 100644 --- a/app/utils.py +++ b/app/utils.py @@ -20,7 +20,7 @@ from flask_user import * from flask_login import login_user, logout_user from .models import * from . import app -import random, string, os, imghdr +import random, string, os, imghdr, user_agents from urllib.parse import urljoin from werkzeug.datastructures import MultiDict @@ -64,6 +64,10 @@ def get_int_or_abort(v, default=None): except ValueError: abort(400) +def is_user_bot(): + user_agent = user_agents.parse(request.headers.get('User-Agent')) + return user_agent.is_bot + def getExtension(filename): return filename.rsplit(".", 1)[1].lower() if "." in filename else None |