]> git.lizzy.rs Git - cheatdb.git/commitdiff
Check user-agent for crawlers before incrementing counters
authorrubenwardy <rw@rubenwardy.com>
Thu, 16 Jul 2020 13:35:12 +0000 (14:35 +0100)
committerrubenwardy <rw@rubenwardy.com>
Thu, 16 Jul 2020 13:35:12 +0000 (14:35 +0100)
app/blueprints/packages/packages.py
app/blueprints/packages/releases.py
app/utils.py

index bacbbe1ffa9737f360ce62bd6c7190389effcd1f..716e79ec28443a62ce285c810efe09990d47619d 100644 (file)
@@ -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
index 1d11477fec9d8bcff2c53ec4cac2f3d86423dfe9..278f9aa6dad27e9fb33d5d8ca3c34e5e3ae4ab34 100644 (file)
@@ -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")
index 38f7ccc7a79069cf30772395a680851a3312df9e..ec5fa3a364fc74c88944095ecd2a9dd21b64cfd0 100644 (file)
@@ -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