Trackerz / Yggtorrent-DLM

Plugin DownloadStation pour YGGTorrent
43 stars 3 forks source link

Connexion à Yggtorrent fonctionne mais le fichier téléchargé est un xxx.cookie #17

Closed CorentinWicht closed 5 months ago

CorentinWicht commented 7 months ago

Bonjour,

Je vous remercie pour votre excellent plugin.

J'ai réussi à le configurer en suivant vos instructions et j'ai pu m'authentifier auprès de Yggtorrent dans la configuration de Download Station. J'ai ensuite fait une première recherche et j'ai téléchargé un fichier (film) pour faire un test. Mon problème est que le fichier téléchargé est un yggtorrent.cookie (peu importe le contenu que je télécharge): yggtorrent.cookie.txt

Entre temps, j'ai voulu refaire la configuration et Download Station m'indique ceci (pourtant je n'ai rien modifié): image

Merci pour votre aide,

C.

Trackerz commented 6 months ago

Salut,

Le problème vient malheureusement de CloudFlare

Je vais tester dans la semaine une solution qui permet de le bypass et si ca fonctionne ca nécessitera l'installation en plus de Flaresolverr

C'est pas ultra pratique c'est pour ca que je n'ai pas voulu le faire jusqu'à présent car sans un NAS qui supporte docker il faudra l'installer autre part, un PC ou un Raspberry et il devra être allumé constamment

CorentinWicht commented 6 months ago

Salut,

Le problème vient malheureusement de CloudFlare

Je vais tester dans la semaine une solution qui permet de le bypass et si ca fonctionne ca nécessitera l'installation en plus de Flaresolverr

C'est pas ultra pratique c'est pour ca que je n'ai pas voulu le faire jusqu'à présent car sans un NAS qui supporte docker il faudra l'installer autre part, un PC ou un Raspberry et il devra être allumé constamment

Salut @Trackerz,

Merci pour ta réponse, en effet cela semble inévitable...

De mon côté, j'ai ouvert un thread sur le GitHub de SynoCommunity pour un "Package Request": https://github.com/SynoCommunity/spksrc/issues/6060

Les chances que cela aboutisse sont relativement faible malheureusement....

Trackerz commented 6 months ago

Re, je n'ai pas oublié ou abandonné, j'ai pu mettre a jour le code et ca fonctionne pour la recherche mais pour le download du fichier torrent j'ai des problèmes...

Depuis download station ou en test depuis une page web le challenge cloudflare apparait, en revanche depuis un terminal en lancant le script php ou alors en nodejs ou python pas de problème. Dans les 2 cas j'injecte bien le useragent + le cookie cf_clearance récupéré depuis une requête FlareSolverr pourtant.

Je soupçonne que le navigateur et le moteur de download station ajoute des cookies indésirables ou en zappe certains. Je vais me pencher dessus a fond ce weekend.

Si quelqu'un passe par la et a une idée voici un bout de code que je n'arrive pas a faire marcher depuis un navigateur mais qui fonctionne dans un terminal en le lançant avec la commande -> php ".\ygg.php"

function getFlaresolverrParams()
{
  $flareSolverrURL = "http://192.168.1.24:8191/v1";

  $curl = curl_init();

  curl_setopt_array($curl, array(
  CURLOPT_POST => true,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER => array("Content-Type: application/json"),
  CURLOPT_URL => $flareSolverrURL,
  CURLOPT_POSTFIELDS => json_encode(
    array(
      "cmd" => "request.get",
      "url" => "https://yggtorrent.qa",
      "maxTimeout" => 60000,
    )
  )
  ));

  $response = curl_exec($curl);
  curl_close($curl);

  $solution = json_decode($response)->solution;

  $cookiesString = "";
  foreach ($solution->cookies as $cookie) {
    $cookiesString .= $cookie->name . "=" . $cookie->value . "; ";
  }

  $params = array(
    "cookies" => trim($cookiesString),
    "userAgent" => $solution->userAgent
  );

  return $params;
}

$params = getFlaresolverrParams();

$curl = curl_init("https://yggtorrent.qa/");

curl_setopt_array($curl, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_SSL_VERIFYPEER => false,
  CURLOPT_SSL_VERIFYHOST => 0,
  CURLOPT_COOKIE => $params["cookies"],
  CURLOPT_USERAGENT => $params["userAgent"],
]);

$content = curl_exec($curl);
curl_close($curl);

echo $content;
CorentinWicht commented 5 months ago

Re, je n'ai pas oublié ou abandonné, j'ai pu mettre a jour le code et ca fonctionne pour la recherche mais pour le download du fichier torrent j'ai des problèmes...

Depuis download station ou en test depuis une page web le challenge cloudflare apparait, en revanche depuis un terminal en lancant le script php ou alors en nodejs ou python pas de problème. Dans les 2 cas j'injecte bien le useragent + le cookie cf_clearance récupéré depuis une requête FlareSolverr pourtant.

Je soupçonne que le navigateur et le moteur de download station ajoute des cookies indésirables ou en zappe certains. Je vais me pencher dessus a fond ce weekend.

Si quelqu'un passe par la et a une idée voici un bout de code que je n'arrive pas a faire marcher depuis un navigateur mais qui fonctionne dans un terminal en le lançant avec la commande -> php ".\ygg.php"

function getFlaresolverrParams()
{
  $flareSolverrURL = "http://192.168.1.24:8191/v1";

  $curl = curl_init();

  curl_setopt_array($curl, array(
  CURLOPT_POST => true,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER => array("Content-Type: application/json"),
  CURLOPT_URL => $flareSolverrURL,
  CURLOPT_POSTFIELDS => json_encode(
    array(
      "cmd" => "request.get",
      "url" => "https://yggtorrent.qa",
      "maxTimeout" => 60000,
    )
  )
  ));

  $response = curl_exec($curl);
  curl_close($curl);

  $solution = json_decode($response)->solution;

  $cookiesString = "";
  foreach ($solution->cookies as $cookie) {
    $cookiesString .= $cookie->name . "=" . $cookie->value . "; ";
  }

  $params = array(
    "cookies" => trim($cookiesString),
    "userAgent" => $solution->userAgent
  );

  return $params;
}

$params = getFlaresolverrParams();

$curl = curl_init("https://yggtorrent.qa/");

curl_setopt_array($curl, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_SSL_VERIFYPEER => false,
  CURLOPT_SSL_VERIFYHOST => 0,
  CURLOPT_COOKIE => $params["cookies"],
  CURLOPT_USERAGENT => $params["userAgent"],
]);

$content = curl_exec($curl);
curl_close($curl);

echo $content;

Merci pour votre réponse, pour information j'ai renoncé et j'utilise un autre système. Bonne continuation!