diff --git a/app/Console/Commands/SaveUseragents.php b/app/Console/Commands/SaveUseragents.php
new file mode 100644
index 0000000000000000000000000000000000000000..a6e82947efeff870ffeeaefa812732491d87fb4d
--- /dev/null
+++ b/app/Console/Commands/SaveUseragents.php
@@ -0,0 +1,59 @@
+<?php
+
+namespace App\Console\Commands;
+
+use Carbon\Carbon;
+use Illuminate\Console\Command;
+use Illuminate\Support\Facades\Redis;
+
+class SaveUseragents extends Command
+{
+    /**
+     * The name and signature of the console command.
+     *
+     * @var string
+     */
+    protected $signature = 'requests:useragents';
+
+    /**
+     * The console command description.
+     *
+     * @var string
+     */
+    protected $description = 'Saves a list of recent User-Agents from Redis into a sqlite database';
+
+    /**
+     * Create a new command instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * Execute the console command.
+     *
+     * @return mixed
+     */
+    public function handle()
+    {
+        $agents = [];
+        $agent = null;
+        $now = Carbon::now('utc')->toDateTimeString();
+
+        while (($agent = Redis::lpop("useragents")) !== null) {
+            $newEntry = json_decode($agent, true);
+            $newEntry["created_at"] = $now;
+            $newEntry["updated_at"] = $now;
+            $agents[] = $newEntry;
+        }
+
+        \App\UserAgent::insert($agents);
+
+        // Delete old entries (older than 24h)
+        $expiration = Carbon::now('utc')->subDays(1);
+        \App\UserAgent::where('created_at', '<', $expiration)->delete();
+    }
+}
diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php
index 4489d002d41d7f64a1b9f68f29f3c48b23a64aac..decf0ba0c2c94d37c3a61365b1236a7c5e7ec965 100644
--- a/app/Console/Kernel.php
+++ b/app/Console/Kernel.php
@@ -26,6 +26,7 @@ class Kernel extends ConsoleKernel
     protected function schedule(Schedule $schedule)
     {
         $schedule->command('requests:gather')->everyFifteenMinutes();
+        $schedule->command('requests:useragents')->everyFiveMinutes();
 
         $schedule->call(function () {
             DB::table('monthlyrequests')->truncate();
diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php
index 1071b8326be8048d74bdbede515e27426309fa52..c9b5b3406b32f01e8d4dc52200b5e0d981546c22 100644
--- a/app/Http/Kernel.php
+++ b/app/Http/Kernel.php
@@ -60,5 +60,6 @@ class Kernel extends HttpKernel
         'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
         'referer.check' => \App\Http\Middleware\RefererCheck::class,
         'humanverification' => \App\Http\Middleware\HumanVerification::class,
+        'useragentmaster' => \App\Http\Middleware\UserAgentMaster::class,
     ];
 }
diff --git a/app/Http/Middleware/UserAgentMaster.php b/app/Http/Middleware/UserAgentMaster.php
new file mode 100644
index 0000000000000000000000000000000000000000..64b1c75e91a9361398907dc6e80f240d7783bf72
--- /dev/null
+++ b/app/Http/Middleware/UserAgentMaster.php
@@ -0,0 +1,67 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Closure;
+use Illuminate\Support\Facades\Redis;
+use Jenssegers\Agent\Agent;
+
+class UserAgentMaster
+{
+    /**
+     * This Middleware takes the User-Agent of the user and saves it into a Database
+     * It will also take a random User Agent of a matching device and replace the current User-Agent with it.
+     */
+    /**
+     * Handle an incoming request.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \Closure  $next
+     * @return mixed
+     */
+    public function handle($request, Closure $next)
+    {
+        /**
+         * Categorize the User-Agents by
+         * 1. Platform (i.e. Ubuntu)
+         * 2. Browser (i.e. Firefox)
+         * 3. Device (desktop|tablet|mobile)
+         */
+        $agent = new Agent();
+        $device = "desktop";
+        if ($agent->isTablet()) {
+            $device = "tablet";
+        } else if ($agent->isPhone()) {
+            $device = "mobile";
+        }
+        // Push an entry to a list in Redis
+        // App\Console\Commands\SaveUseragents.php is called regulary to save the list into a sqlite database
+        Redis::rpush('useragents', json_encode(["platform" => $agent->platform(), "browser" => $agent->browser(), "device" => $device, "useragent" => $_SERVER['HTTP_USER_AGENT']]));
+        Redis::expire('useragents', 301);
+
+        // Try to retrieve a random User-Agent of the same category from the sqlite database
+        $newAgent = \App\UserAgent::where("platform", $agent->platform())
+            ->where("browser", $agent->browser())
+            ->where("device", $device)
+            ->inRandomOrder()
+            ->limit(1)
+            ->get();
+
+        if (sizeof($newAgent) >= 1) {
+            // If there is an Entry in the database use it
+            $newAgent = $newAgent[0]->useragent;
+        } else {
+            // Else anonymize the version of the current User-Agent
+            $agentPieces = explode(" ", $_SERVER['HTTP_USER_AGENT']);
+            for ($i = 0; $i < count($agentPieces); $i++) {
+                $agentPieces[$i] = preg_replace("/(\d+\.\d+)/s", "0.0", $agentPieces[$i]);
+                $agentPieces[$i] = preg_replace("/([^\/]*)\/\w+/s", "$1/0.0", $agentPieces[$i]);
+            }
+            $newAgent = implode(" ", $agentPieces);
+        }
+        // Replace the User-Agent
+        $_SERVER['HTTP_USER_AGENT'] = $newAgent;
+
+        return $next($request);
+    }
+}
diff --git a/app/UserAgent.php b/app/UserAgent.php
new file mode 100644
index 0000000000000000000000000000000000000000..81f3ee62036fc983787e9919964cdcde36b2047a
--- /dev/null
+++ b/app/UserAgent.php
@@ -0,0 +1,10 @@
+<?php
+
+namespace App;
+
+use Illuminate\Database\Eloquent\Model;
+
+class UserAgent extends Model
+{
+    protected $connection = 'useragents';
+}
diff --git a/build.sh b/build.sh
index 18f64e951a70c1c1c3e504fb11d1183fd29bc85e..757e071aaa3e283b3fd5f1fdcc7797a77c52bc70 100644
--- a/build.sh
+++ b/build.sh
@@ -21,13 +21,12 @@ scp -P 63824 metager@metager3.de:~/UsersSeeder.php database/seeds/
 touch storage/logs/laravel.log
 touch storage/logs/worker.log
 touch database/metager.sqlite
-chmod 777 config/sumas.json config/sumas.json database/metager.sqlite
+touch database/useragents.sqlite
+chmod 777 config/sumas.json config/sumas.json database/metager.sqlite database/useragents.sqlite
 chmod -R 777 storage
 chmod -R 777 bootstrap/cache
 npm install
 npm run production
-php artisan migrate --force
-php artisan db:seed --force
 php artisan requests:gather
 if [ -f ~/MetaGer/artisan ]; then php ~/MetaGer/artisan down;fi
 cd ~/
diff --git a/config/database.php b/config/database.php
index 891fb9238df9dfe845c28f80e786b75ce453386f..23e8c70e9f7045a3d5187647021bd2664d3cf2b1 100644
--- a/config/database.php
+++ b/config/database.php
@@ -51,7 +51,11 @@ return [
             'database' => database_path(env('SQLITE_DATABASE', 'database.sqlite')),
             'prefix' => '',
         ],
-
+        'useragents' => [
+            'driver' => 'sqlite',
+            'database' => database_path('useragents.sqlite'),
+            'prefix' => '',
+        ],
         'mysql' => [
             'driver' => 'mysql',
             'host' => env('DB_HOST', 'localhost'),
diff --git a/database/.gitignore b/database/.gitignore
index 9b1dffd90fdce0601e734330eecdff3a301fa2e9..4c071c8a12ffbd82e3b94cfa2b4c6e71430d7e5b 100644
--- a/database/.gitignore
+++ b/database/.gitignore
@@ -1 +1,2 @@
 *.sqlite
+!useragents.sqlite
\ No newline at end of file
diff --git a/database/migrations/2019_10_15_103139_create_user_agents_table.php b/database/migrations/2019_10_15_103139_create_user_agents_table.php
new file mode 100644
index 0000000000000000000000000000000000000000..bf18a8a0e8e80b4804d3b9a8d59a391c86d0065a
--- /dev/null
+++ b/database/migrations/2019_10_15_103139_create_user_agents_table.php
@@ -0,0 +1,35 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateUserAgentsTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::connection('useragents')->create('user_agents', function (Blueprint $table) {
+            $table->increments('id');
+            $table->string('platform');
+            $table->string('browser');
+            $table->enum('device', ["desktop", "tablet", "mobile"]);
+            $table->string('useragent', 300);
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::connection('useragents')->dropIfExists('user_agents');
+    }
+}
diff --git a/database/useragents.sqlite b/database/useragents.sqlite
new file mode 100644
index 0000000000000000000000000000000000000000..23af7d97ddd9609a699cd6fc3ced2ddafc8a8b46
Binary files /dev/null and b/database/useragents.sqlite differ
diff --git a/public/index.php b/public/index.php
index 4334ce537cd2b6c2d2428f9ca992cb4ac220db04..0db12691b303ca33de4a3ebaed50f05390282d4f 100644
--- a/public/index.php
+++ b/public/index.php
@@ -15,16 +15,6 @@ if (isset($_SERVER["HTTP_FORWARDED"]) && isset($_SERVER["HTTP_X_FORWARDED_FOR"])
 
 $_SERVER["AGENT"] = $_SERVER["HTTP_USER_AGENT"];
 
-if (isset($_SERVER['HTTP_USER_AGENT'])) {
-    $agentPieces = explode(" ", $_SERVER['HTTP_USER_AGENT']);
-
-    for ($i = 0; $i < count($agentPieces); $i++) {
-        $agentPieces[$i] = preg_replace("/(\d+\.\d+)/s", "0.0", $agentPieces[$i]);
-        $agentPieces[$i] = preg_replace("/([^\/]*)\/\w+/s", "$1/0.0", $agentPieces[$i]);
-    }
-    $_SERVER['HTTP_USER_AGENT'] = implode(" ", $agentPieces);
-}
-
 /*
 |--------------------------------------------------------------------------
 | Register The Auto Loader
diff --git a/resources/js/keyboardNavigation.js b/resources/js/keyboardNavigation.js
index 2f768e0aa29adea1173ab16a3df0fac5221e7a2e..70c2e476eb0e51f27fb449f984e11f0a98c0f1c0 100644
--- a/resources/js/keyboardNavigation.js
+++ b/resources/js/keyboardNavigation.js
@@ -7,30 +7,29 @@ $(document).ready(function () {
     // Add entry point for tabbing to the first result
     $('.result, .ad').first().attr("id", "results-entry");
     // Initially focus the searchbar
-    $('div.search-input input').focus();
 });
 
 /**
  * Simulate a click on enter keypress when focused on labels
  */
-$('label').on('keydown', function(e) {
-    if(e.keyCode == '13') {
+$('label').on('keydown', function (e) {
+    if (e.keyCode == '13') {
         $(this).click();
         $('a', this)
     }
-}); 
+});
 
 /**
  * Handles tab keypress and escape keypress
  */
-$(document).on('keydown', function(e) {
+$(document).on('keydown', function (e) {
     e = e || window.event;
     // On first tab keypress there is special behaviour and the ctrlInfo flag is set
-    if(!ctrlInfo && e.keyCode == '9') {
+    if (!ctrlInfo && e.keyCode == '9') {
         focusNavBox();
         e.preventDefault();
         ctrlInfo = true;
-    } else if(e.keyCode == '27') {
+    } else if (e.keyCode == '27') {
         escKeyPressed();
     }
 });
diff --git a/resources/views/parts/searchbar.blade.php b/resources/views/parts/searchbar.blade.php
index 1cb823adbf605fdad0acd841485d2be734cb0acf..eefb203ef4463ba7717863df7352993d50234fbc 100644
--- a/resources/views/parts/searchbar.blade.php
+++ b/resources/views/parts/searchbar.blade.php
@@ -8,7 +8,7 @@
 					</a>
 				</div>
 				<div class="search-input">
-					<input type="search" name="eingabe" value="@if(isset($eingabe)){{$eingabe}}@endif" required=""  @if(\Request::is('/') && stripos(\Request::header('User-Agent'), "MetaGer App") !== 0) autofocus @endif autocomplete="off" class="form-control" placeholder="{{ trans('index.placeholder') }}" tabindex="0">
+					<input type="search" name="eingabe" value="@if(isset($eingabe)){{$eingabe}}@endif" required=""  @if(\Request::is('/') && !\Request::filled('mgapp')) autofocus @endif autocomplete="off" class="form-control" placeholder="{{ trans('index.placeholder') }}" tabindex="0">
 					<button id="search-delete-btn" name="delete-search-input" type="button" tabindex="-1">
 						&#xd7;
 					</button>
diff --git a/routes/web.php b/routes/web.php
index ffc44c4080181a408faa3dd70410561819fb5b77..90f0257318fc166ade1596c64106cceb64ed0bce 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -180,7 +180,7 @@ Route::group(
             return redirect(LaravelLocalization::getLocalizedURL(LaravelLocalization::getCurrentLocale(), '/'));
         });
 
-        Route::match(['get', 'post'], 'meta/meta.ger3', 'MetaGerSearch@search')->middleware('humanverification');
+        Route::match(['get', 'post'], 'meta/meta.ger3', 'MetaGerSearch@search')->middleware('humanverification', 'useragentmaster');
         Route::get('meta/loadMore', 'MetaGerSearch@loadMore');
         Route::post('img/cat.jpg', 'HumanVerification@remove');
         Route::get('r/metager/{mm}/{pw}/{url}', ['as' => 'humanverification', 'uses' => 'HumanVerification@removeGet']);
diff --git a/storage/app/public/aufnahmeantrag-de.pdf b/storage/app/public/aufnahmeantrag-de.pdf
index 6ba1b2990e54c30b497c39a9d8c7f64cdecb0d0f..afe77b40c382e939e03afefdee8e038fef0adbc1 100644
Binary files a/storage/app/public/aufnahmeantrag-de.pdf and b/storage/app/public/aufnahmeantrag-de.pdf differ
diff --git a/storage/app/public/aufnahmeantrag-en.pdf b/storage/app/public/aufnahmeantrag-en.pdf
index 1c3bce13a4a1c5029acf689d11cfbe7002838fda..e8fb8140db56e73077c23e2db1dff96c0322723d 100644
Binary files a/storage/app/public/aufnahmeantrag-en.pdf and b/storage/app/public/aufnahmeantrag-en.pdf differ