aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrubenwardy <rw@rubenwardy.com>2020-07-16 14:35:12 +0100
committerrubenwardy <rw@rubenwardy.com>2020-07-16 14:35:12 +0100
commit74371d3fcb6731726564f554956f62ff29cab067 (patch)
tree98ea198bd563e203888722aa2421f7f7b55d1770
parent9d3ba8991d2d0ed249398e5bfdb055d566ff9df4 (diff)
downloadcheatdb-74371d3fcb6731726564f554956f62ff29cab067.tar.xz
Check user-agent for crawlers before incrementing counters
-rw-r--r--app/blueprints/packages/packages.py2
-rw-r--r--app/blueprints/packages/releases.py2
-rw-r--r--app/utils.py6
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