Open coralie10 opened 10 years ago
Bonjour, Désolé pour la réponse un peu tardive. Je ne vais pas pouvoir beaucoup t'aider, si ton problème ne survient que sur l'hébergement. Il devrait tout de même être possible de se renseigner : j'ai rajouté une ligne de code qui affiche un message plus détaillé lors d'une erreur de ce type, il te suffit de mettre à jour le fichier api-allocine-helper.php sur ton serveur.
Il y a une erreur de syntaxe sur la ligne ajoutée :)
Il semblerait que certaines plages IP d'OVH soient bannies par Allociné (depuis peut-être 2-3 semaines, je n'avais pas utilisé mon script depuis un moment). Le serveur ne renvoie aucune erreur mais ne revoie rien. La seule solution que j'ai trouvé pour l'instant c'est de passer par un proxy pour faire la requête.
Curieux car normalement avec l'api, à chaque requête sur allociné, une ip et un browser différent est envoyé. Pour ma part que se soit en local ou sur un dédié cela fonctionne parfaitement. Vérifies qu'a chaque requête tu as bien une ip différente de transmis ;)
Pas de correction trouvée à ce jour, j'ai bien une IP/User-Agent différent à chaque fois. Je reçoit juste un HTTP/1.1 403 Forbidden et c'est tout. (tout fonctionne sur mon poste en local) Je me suis rabattu sur TMDB en attendant, qui dispose d'une jolie base (mais malheureusement pas toujours en FR), et d'une API officielle =)
Je ne sais pas quoi tu dires, je n'ai pas ce problème et ton script fonctionne en local, donc ce n'est pas l'API d'étienne qui est en cause. Une requête mal effectuée peut être ou un blocage de ton hébergeur par allociné. As tu essayé sur un autre hébergeur ? Tmdb est bien mais malheureusement il manque trop d'info sur les films, base moins importante et beaucoup de données erronées, je l'utilise également avec beaucoup de retouche à faire et des que je peux je met les infos à jour sur leur site.
J'ai également ce problème, il se produit de façon assez aléatoire mais quand on déjà fait une grosse quantité d'appel à la fonction.
Pourtant j'héberge tout chez moi sur mon NAS.
il y a peut être un nombre limité d'appel par ip par heure ou par jour effectué par allociné. Je n'ai pas testé par lot, ce qui voudrait dire avec le même appel et donc ip. Car en appel unique pour chaque film (donc l'ip change à chaque fois) je n'ai pas de problème pour le moment.
Après analyse, il y a (apparament) une nouvelle clé secrète pour signer les appels (et aussi une nouvelle methode de signature). Je vous met le ZIP des fichiers concernés : http://s000.tinyupload.com/index.php?file_id=80051159646445188755
Et la totale : http://s000.tinyupload.com/index.php?file_id=08957661746762957232
BuildConfig.java contient la config de base AllocineApplication.java instancie init() de BuildConfigData BuildConfigData.java met la conf dans les bonnes variables
la classe finalizeUrl de AlloCineClient.java est celle qui nous intéresse, la ou les appels sont signés La signature est dans str5.
protected String finalizeUrl(String paramString1, String paramString2)
{
if (paramString2 == null) {}
int i;
do
{
return paramString2;
i = 1 + paramString2.indexOf("?");
} while (i <= 0);
String str1 = paramString2.substring(0, i);
String str2 = paramString2.substring(i);
String str3 = "&sed=" + sigDateFormat.format(new Date());
Object localObject = str2 + str3;
String str4 = paramString1 + (String)localObject + this.key;
try
{
MessageDigest localMessageDigest = MessageDigest.getInstance("SHA-1");
localMessageDigest.reset();
localMessageDigest.update(str4.getBytes("iso-8859-1"), 0, str4.length());
String str5 = URLEncoder.encode(new String(CustomBase64.encode(localMessageDigest.digest(), 0)), "utf-8");
if (str5.endsWith("%0A")) {
str5 = str5.substring(0, -3 + str5.length());
}
if (str5.length() > 48) {
str5 = str5.substring(0, 48);
}
String str6 = (String)localObject + "&sig=" + str5;
localObject = str6;
}
return str1 + (String)localObject;
}
Si il y a des fous de Java, j'ai trouvé les infos, mais pas encore réussi à faire fonctionner la classe avec la nouvelle méthode.
Il y a aussi le CustomBase64 où il faudrait traduire la méthode encode
qui est bien grosse...
Quoique je ne sais pas si c'est le décompileur qui fait ça, mais finalizeUrl
a l'air d'uniquement retourner paramString2
? Y a une autre finalizeUrl
dans VolleyClient.java qui elle retourne en effet directement paramString2...
Un peu imbitable le code. Ca a dû être "obfusqué". Le pire est la partie avec le CustomBase64. @marboin quel décompileur as-tu utilisé ? Peut-être qu'avec un deobfuscateur comme https://github.com/Storyyeller/Krakatau le résultat sera plus lisible.
Je relance peut être le sujet (non résolu n'est-il pas ?): Bonjour à tous et bonjour Etienne Gauvin, Je travail pour un petit ciné municipal depuis 25 ans, et programmer est mon passe temps. Ainsi, j'ai développé énormément de choses en vb puis en javascript au sein des google sheet pour exploiter les info d'allociné. En passant par les APIs aussi bien qu'en travaillant sur les pages web d'allociné en utilisant des tas de stratagèmes :) J'ai découvert , il y a quelques mois, ton formidable projet api-allocine-helper (adaptation du du projet https://pypi.org/project/allocine si mes souvenirs sont exacts ? ) mais c'est seulement depuis hier que je me suis mis à le tester. Je n'avais plsu fait de php depuis bien 5 ans voir plus. Ca va ça revient mais avec les objets je tatonne , va falloir que je planche sur les cours....
Bref, ce mardi 31/03/2020 j'ai su installer et utiliser api-allocine-helper en local. Youpii ! Pour mes essais sur free.fr j'ai eu quelques déboires
Enfin, il me reste un problème non résolu (de time out ) : Erreur n°2: An cURL error occurred while retrieving the data: connect() timed out!.
J'ai cherché bien sur ici et ailleurs après une réponse mais je n'ai trouvé que ceci: The extension php_curl must be installed with PHP or function file_get_contents must be enabled Hors j'ai bien dans phpinfo: CURL support enabled CURL Information libcurl/7.26.0 OpenSSL/1.0.1t zlib/1.2.7 libidn/1.25 libssh2/1.4.2 librtmp/2.3
Peut être saurez-vous m'éclairer. Je partagerai volontiers avec vous sur mes projets dont je te parlais. Ce n'est pas à tout les coins de rues qu'on croise quelqu'un qui fait du code et encore moins sur un même but ;)
Amicalement et en confinement , Guillaume DOISE J'ai 49 ans, j'habite Bailleul , dans le Nord 59270
Bonjour Guillaume, et désolé de ne pas t'avoir répondu avant, je passe rarement sur GitHub ces dernières années et au moment où j'avais vu ton mail, je ne pouvais pas répondre, et j'ai ensuite oublié.
Si tu arrives à te connecter à l'API et récupérer des données en local mais pas sur ton hébergement free.fr, alors le problème vient surtout de l'hébergement. Peut-être qu'il n'est pas permis d'accéder à des sites externes sur celui-ci ? Il faudrait tenter de récupérer le contenu d'une page (par exemple directement l'accueil de www.google.fr) avec cURL ou file_get_contents
... Si tu peux le faire en local mais pas sur ton hébergement, alors c'est bien l'hébergement le problème :(
Merci Etienne ! :) J'essaierai donc ça . Là ce soir c'es montage vidéo . Un ptiti délire marionnettes pour l'anniv de mon frangin :) A bientôt , je te ferai un retour bien entendu ! En tout cas ton api m'aide déjà énormément en passant par l'hebergement sur mon serveur / raspberrypi ! MERCI ! A+, Guillaume
Le jeu. 18 juin 2020 à 12:09, Étienne Gv notifications@github.com a écrit :
Bonjour Guillaume, et désolé de ne pas t'avoir répondu avant, je passe rarement sur GitHub ces dernières années et au moment où j'avais vu ton mail, je ne pouvais pas répondre, et j'ai ensuite oublié.
Si tu arrives à te connecter à l'API et récupérer des données en local mais pas sur ton hébergement free.fr, alors le problème vient surtout de l'hébergement. Peut-être qu'il n'est pas permis d'accéder à des sites externes sur celui-ci ? Il faudrait tenter de récupérer le contenu d'une page (par exemple directement l'accueil de www.google.fr) avec cURL ou file_get_contents... Si tu peux le faire en local mais pas sur ton hébergement, alors c'est bien l'hébergement le problème :(
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/etienne-gauvin/api-allocine-helper/issues/13#issuecomment-645921592, or unsubscribe https://github.com/notifications/unsubscribe-auth/AFLRDMA6G2XVMEYMOPNLOYDRXHRWFANCNFSM4ALFJ3WA .
Bonjour Etienne :)
J'aurais aimé avoir ta confirmation, ton avis ... J'ai bien l'impression que là soudainement depuis qq jours allociné bloque une fois de plus: http://api.allocine.fr/rest/v3/movie?media=mp4-lc&partner=YW5kcm9pZC12Mg&profile=large&version=2&code=275707 Me répond : "403 - [Mon ip]" Puis j'ai l'erreur: "Error 3: An JSON error (4) occurred when converting data: Syntax error" à l'appel de mon script PHP: http://raspgui.hd.free.fr/allocine/listFilmsTable.php?searched=dark dont voici le code ici plus loin.
Dis moi , c'est foutu ! ? lol ;) Ou tu as des pistes. Je te remercie encore, Guillaume DOISE
<?php
// Inclure le script require_once "./api-allocine-helper.php"; $search = htmlspecialchars($_GET["searched"]); $allohelper = new AlloHelper; ?>
'; ?> |
'."// " . $data->results->movie .' results for "' . $search . '":' . PHP_EOL; echo ' |
'.$i . "\t" . $movie->code . "\t" . $movie->title . PHP_EOL; echo ' |
'."Error " . $e->getCode() . ": " . $e->getMessage() . PHP_EOL; echo ' |
Le jeu. 18 juin 2020 à 20:45, Guillaume Doise gdoise@gmail.com a écrit :
Merci Etienne ! :) J'essaierai donc ça . Là ce soir c'es montage vidéo . Un ptiti délire marionnettes pour l'anniv de mon frangin :) A bientôt , je te ferai un retour bien entendu ! En tout cas ton api m'aide déjà énormément en passant par l'hebergement sur mon serveur / raspberrypi ! MERCI ! A+, Guillaume
Le jeu. 18 juin 2020 à 12:09, Étienne Gv notifications@github.com a écrit :
Bonjour Guillaume, et désolé de ne pas t'avoir répondu avant, je passe rarement sur GitHub ces dernières années et au moment où j'avais vu ton mail, je ne pouvais pas répondre, et j'ai ensuite oublié.
Si tu arrives à te connecter à l'API et récupérer des données en local mais pas sur ton hébergement free.fr, alors le problème vient surtout de l'hébergement. Peut-être qu'il n'est pas permis d'accéder à des sites externes sur celui-ci ? Il faudrait tenter de récupérer le contenu d'une page (par exemple directement l'accueil de www.google.fr) avec cURL ou file_get_contents... Si tu peux le faire en local mais pas sur ton hébergement, alors c'est bien l'hébergement le problème :(
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/etienne-gauvin/api-allocine-helper/issues/13#issuecomment-645921592, or unsubscribe https://github.com/notifications/unsubscribe-auth/AFLRDMA6G2XVMEYMOPNLOYDRXHRWFANCNFSM4ALFJ3WA .
Bonjour Guillaume, en effet ça sent le roussi pour ton IP, le code HTTP 403 signifie probablement que ton accès a été bloqué par Allociné... Tu peux passer par un VPN ou une autre connexion internet, je ne vois que ça ! Et ça n'empêchera pas l'IP suivant d'être bloqué aussi, si ils te repèrent.
(L'erreur suivante "Error 3: An JSON error (4) occurred when converting data: Syntax error"
n'est qu'une conséquence de l'erreur 403)
Bonjour,
Tout d'abord je vous remercie bcp pour votre appli ! J'ai bien la dernière version que j'utilise pour mon projet de fin cours.
Voilà mon problème : en local je n'ai aucun souci, j'ai passé mon site en ligne ( hébergement OVH) et les requêtes fonctionnent au petit bonheur la chance ! J'ai très très souvent l'erreur 2: An error occurred while retrieving the data. Exemple avec "the dark", "300", "trains".
J'ai bien enregistré mes fichiers en utf8, j'ai cru que c'était bon mais non ... si vous avez une idée ... surtout que en local (sous wamp) cela fonctionne parfaitement.
Merci par avance pour votre aide. Coralie