This commit is contained in:
salam committed 2026-09-26 17:49:06 +02:00
1 parent 267b5b9583
commit 911b515021
15 files changed
+1048 -56

No files matched your search

+63
View File
@@ -0,0 +1,63 @@
<?php
namespace App\Services;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log;
class CloudflareSolverService
{
protected string $solverUrl = 'http://192.168.178.145:8191/v1';
/**
* Holt die Daten und gibt das extrahierte JSON als PHP-Array zurück.
* Wenn etwas schiefgeht, wird null zurückgegeben.
*/
public function getJsonFromUrl(string $targetUrl): ?array
{
try {
$response = Http::withHeaders([
'Content-Type' => 'application/json',
])->timeout(120)->post($this->solverUrl, [
'cmd' => 'request.get',
'url' => $targetUrl,
'maxTimeout' => 90000,
]);
if ($response->failed()) {
Log::error('FlareSolverr Verbindungsfehler. Status: '.$response->status());
return null;
}
$data = $response->json();
if (isset($data['status']) && $data['status'] === 'ok') {
$htmlContent = $data['solution']['response'];
// JSON aus dem HTML isolieren
if (preg_match('/\{.*\}/s', $htmlContent, $matches)) {
$rawJson = $matches[0];
$decoded = json_decode($rawJson, true);
if (json_last_error() === JSON_ERROR_NONE) {
// HIER: Erfolgreiche Rückgabe des Arrays!
return $decoded;
}
Log::error('Extrahiertes Textfragment ist kein gültiges JSON.');
} else {
Log::error('Kein JSON-Muster { ... } im HTML gefunden.');
}
} else {
Log::error('FlareSolverr konnte die Seite nicht umgehen: '.json_encode($data));
}
} catch (\Exception $e) {
Log::error('PHP Exception im CloudflareSolverService: '.$e->getMessage());
}
// Falls irgendwo ein Fehler auftrat, geben wir null zurück
return null;
}
}
+11
View File
@@ -0,0 +1,11 @@
services:
flaresolverr-server:
image: flaresolverr/flaresolverr:latest # Aktualisiert auf die neueste Version
container_name: flaresolverr_standalone
ports:
- "8191:8191"
environment:
- LOG_LEVEL=info
- TZ=Europe/Vienna
- HOST=0.0.0.0
restart: always