ProRealTime
Zone de développement des applications API, des logiciels et utilitaires développés par les membres du forum

Aide pour API REST IG

par cybermad » 16 mai 2021 00:36

Bonsoir à tous,

Je désire récupérer de la DATA ig via leur API.
Ca marche très bien via un script sur mon dédié, mais si je le lance via une tâche CRON je n'arrive pas à remplir mon cookies avec la X_SECURITY_TOKEN et la CST. Le verbose me sort un fichier request.txt qui contient bien toutes les infos.
Il y a donc bien un échange entre mon serveur et celui de ig, tout fonctionne sauf le remplissage du cookie.

Voici mon script très allégé:

Code : #

  $lien = 'https://demo-api.ig.com/gateway/deal/session';
  $path_cookie = __DIR__.'/cookiesIGtest.txt';
  if (!file_exists($path_cookie )) touch($path_cookie);

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $lien);
    curl_setopt($curl, CURLOPT_COOKIESESSION, true);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_TIMEOUT, 200);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
    curl_setopt($curl, CURLOPT_HEADER, true);
    curl_setopt($curl, CURLOPT_USERAGENT, 'userAgentMozilla');
    curl_setopt($curl, CURLOPT_POSTFIELDS,'{
        "identifier": "myid",
        "password": "mypass"
        } ');
   //     $path_cookie = fopen("cookiesIGtest.txt", 'w');
    curl_setopt($curl, CURLOPT_COOKIEJAR , $path_cookie);
    curl_setopt($curl, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json',
        'Accept: application/json',
        'VERSION: 2',
        'X-IG-API-KEY: 3.........4'
      ));
    curl_setopt($curl, CURLOPT_VERBOSE, true);
    $verbose = fopen('request.txt', 'w');
    curl_setopt($curl, CURLOPT_STDERR, $verbose);
if(!curl_exec($curl)){
    die('Error: "' . curl_error($curl) . '" - Code: ' . curl_errno($curl));
}
else{
    $response = curl_exec($curl);
}
curl_close($curl);
$result = json_decode($response, true);

echo '<pre>';
var_dump($result);
echo'</pre>';
Le fichier qui se crée est celui-là:

Code : #

# Netscape HTTP Cookie File
# https://curl.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.
donc ce n'est pas un problème d'écriture.
Le script ci-dessous fonctionne bien:

Code : #

$lien = 'https://www.google.com/';
$path_cookie = __DIR__.'/test_cookies.txt';
if (!file_exists($path_cookie)) touch($path_cookie);

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $lien);
curl_setopt($curl, CURLOPT_COOKIESESSION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_COOKIEJAR, $path_cookie);
curl_setopt($curl, CURLOPT_USERAGENT, 'userAgentMozilla');

$return = curl_exec($curl);
curl_close($curl);
Si je commente CURLOPT_COOKIEJAR le fichier est créé et est vide. Si je laisse la ligne active alors le fichier est créé avec les en-têtes listées plus haut, mais sans aucune autre info...

Une idée svp ?

Re: Aide pour API REST IG

par cybermad » 16 mai 2021 08:24

Merci de ta réponse.

Le problème ne se situe pas à ce niveau: je n’arrive pas à mettre dans les cookies les codes reçu, comme je l’a indiqué dans mon message précédent.

En CRON je précise.

Re: Aide pour API REST IG

par cybermad » 16 mai 2021 11:43

Le fichier n'est pas vide... il y a les en-têtes dedans.
Quand je retire CURLOPT_COOKIEJAR le fichier se crée mais il est vide.
Quand je mets CURLOPT_COOKIEJAR le fichier se rempli avec les en-tête mais pas avec les X_SECURITY_TOKEN et CST qui sont pourtant renvoyés par ig.

Je tourne en rond...

Re: Aide pour API REST IG

par momoxe » 16 mai 2021 19:57

Hello,
jamais joué avec l'API, je vais tester ca voir ce qu'on peut en tirer.
Ne serait ce pas un problème de variable qui ne sont pas remplit. Pourquoi ne pas passer par un fichier temporaire pour écrire la data, puis tu lis celui-ci. Car je vois que tu utilise curl, check les droits aussi.

Re: Aide pour API REST IG

par cybermad » 16 mai 2021 20:37

Merci de la réponse.
C’est exactement le rôle de CURLOPT_COOKIEJAR d’écrire dans un fichier. Comme je le disais cette fonction écris les en-tête donc…. Ce n’est pas un problème de droit.
De reste l’écriture dans un fichier fonctionne parfaitement avec d’autres domaines. Déjà indiqué dès mon premier post.

Je reste preneur d’une piste.

Re: Aide pour API REST IG

par cybermad » 17 mai 2021 06:12

Merci de ton retour.

Qui a parlé de Windows ?
Bon déjà je suis sous Mac, mais comme je l’ai dit dans ma demande à la deuxième ligne… « sur mon dédié ».
J’ai donc un serveur dédié sous un Linux et je fais tourner des CRON dessus. Dernière techno de SSD et assez de mémoire vive je te rassure. Y a des e-commerces dessus.
C’est pas le sujet.

Par ailleurs je n’ai besoin que du 15 min soit 4 CRON par heure c’est pas la mort.
Là non plus c’est pas le soucis 😉

Je comprends pas pourquoi le script ne dépose pas les infos CST etc dans le fichier texte alors qu’il les récupère bien, et qu’il écrit les en-têtes…
Je pensais que j’étais pas le seul à vouloir faire du cron sur une Api IG

Bon l’objectif n’est pas transcendant, avoir des infos personnalisées en ligne afin de voir en un clin d’œil ce dont j’ai besoin voire m’envoyer des emails personnalisés ou sms à 7h00 avec le point de la veille sur des calculs précis.

Et pour ceux qui pensent que ma bdd va devenir énorme, je n’ai besoin que du mois glissant pour le 15 min. J’ai une table hour, une table day, une table week et une month. Donc 4 lignes dans la week pour 1 mois, ça va aller 🤣
Et comme j’ai prt et TRADINGVIEW pour le reste, je suis juste en période glissante et à mon niveau mysql le suffira trèèès largement.

Ex: je veux recevoir un e-mail qui me disent: le prix se situe entre le PP hebdo, et le PP du jour.
Je ne trade que dans certaines conditions car je manque de temps. Donc l’objectif est de me dire quand le marché correspond à ce que je cherche, sans ouvrir prt ou TV, et si ça me convient alors, d’en voir plus sur mon admin avant d’aller sur prt.

Bon si quelqu’un connaît un système similaire je suis preneur.

A la main mes scripts API fonctionnent. Je perd du temps sur ce Fichu fichier pour automatiser le truc, c’est énervant !

Re: Aide pour API REST IG

par cybermad » 17 mai 2021 06:16

-,

Tu trades directement par API où tu as un autre objectif ? Tu parles d’interfaces utilisateurs connectés, tu « offres » des services en ligne ?

Re: Aide pour API REST IG

par cybermad » 17 mai 2021 07:46

Moi pour les robots je suis encore sous prt 😉.
Pour les interfaces U je sais, mais ça pouvait être deux façons de voir Bein c’était l’autre🤣.

J’ai laissé un post sur stackoverflow pour voir. Justement en debug je vois bien que les retours de ig le token et le CST.

Re: Aide pour API REST IG

par falex » 17 mai 2021 07:51

Cron utilise quel compte sur la machine pour lancer le job ? Root ou ton compte utilisateur ?

Tu as essayé avec un script avec des curl et des cookies vers un site web autre que celui d’ig ? Histoire de vérifier si c’est le web d’ig ou ton script qui a un pb.

Sur mon orangerie et rpi j’ai un peu le même genre de problème avec le script de démarrage de domoticz qui démarre bien en Manuel mais pas en « service ».

Re: Aide pour API REST IG

par cybermad » 17 mai 2021 08:44

Merci de ta réponse Falex,

Avec d’autres sites (google par ex) le script écrit le continu du cookie dans le fichier.

Le CRON se lance avec un utilisateur pas en root.
En fait le cron n’a pas de cookies, c’est un fichier qui joue le rôle de cookie grâce à CURLOPT_COOKIEJAR. Du coup les token doivent être écris dedans et lu avec CURLOPT_COOKIEFILE et le realpath ou __DIR__ pour PHP.

C’est comme si CURLOPT_COOKIEJAR était coupé au milieu de sa fonction. Mais debuggué une moitié de fonction connaît pas.
Si je le retire le fichier créé est vide 0 octet, si je mets la fonction j’ai les en-tête JAR qui s’ajoute… c’est comme si elle ne voyait pas le retour de ig mais le verbose me prouve que le script les récupère…

CURLOPT_COOKIEJAR ne saurait pas récupérer ce retour et que de ig ?
Je ne comprends pas.

Orangerie et RPI ? Réécriture smartphone ?

Re: Aide pour API REST IG

par cybermad » 17 mai 2021 09:37

C’est ce que j’ai dit « Le CRON se lance avec un utilisateur pas en root » 😉

Re: Aide pour API REST IG

par falex » 17 mai 2021 11:06

alalalala les problèmes de droits ... quelques soit le système c'est toujours aussi ... même windows si est mus ;-)

Non non pas de coquille Smartphone OrangePi et Raspeberry ... - t'a donné un liens pour voir de quoi on parle. Enfin en résumé c'est une base Linux.

Sur OSX on est sur une base freeBSD, fais gaffe il y a quelques fois des micro-différence donc fait bien attention de voir si quelqu'un post une solution du cron sous OSX ...

Re: Aide pour API REST IG

par cybermad » 17 mai 2021 11:30

-, Falex me dit que ce ne devrait pas être lancé en root. Et je lui réponds que ce n’est pas le cas. C’est un user.

Et non, ce n’est pas un problème:
- ni de Chown
- ni de chmod
- ni de path

Car sur d’autres sites ça marche sans problème.
Et le fichier est tout de même créé vide, puis les en-têtes sont ajoutés.

Re: Aide pour API REST IG

par cybermad » 17 mai 2021 11:51

Mais je suis pas en root.
J’ai jamais dit ça. Relisez mes réponses 😉

Re: Aide pour API REST IG

par falex » 17 mai 2021 11:51

cybermad, on est pas sur ta machine, on a pas ton script ni ton compte.

A toi de tester, creuser, tu vas bien finir par trouver où ça coince.
Si tu as d'autre script avec des curl & des cookies qui fonctionnent en cron sur d'autre site web alors ce doit être un problème de recopie de ton cookie dans ta deuxième requete. chabngement de domaine de l'uri par exemple ?

Au pire ajoute un proxy en local sur ta machine pour snifer tes requetes CURL, ... C le seul moyen pour debugier vu que c'est du HTTPS.

CharlesProxy fera très bien l'affaire et il existe sur osx.

Re: Aide pour API REST IG

par falex » 17 mai 2021 11:54

et quand je teste c'est pas avec http://www.google.com mais avec un site avec une authentification (le forum d'andlil par exemple ou ta banque, ou la fnac ...)

Re: Aide pour API REST IG

par falex » 17 mai 2021 11:54

LOL -, il y a tjrs des exceptions.

Re: Aide pour API REST IG

par falex » 17 mai 2021 12:03

c'est quoi un user ?
c'est quoi un pwd ?
c'est quoi un daemon ?
c'est quoi linux ?

Est-ce que avec ma buche de bois je peux créer un user igapi et le chauffer l'hiver ?

Ok je :arrow:

Re: Aide pour API REST IG

par falex » 17 mai 2021 12:31

Elle peux me contrôler ce n'est pas moi qui ne déclare pas des revenus locatifs ... par contre je peux lui donner les noms de ceux qui font ça (mais elle les connait déjà ...).
Après c'est gagne petit, c'est pas avec ce genre de redressement qu'elle va justifier son salaire d'inspectrice ... car 5000€ non déclaré ... ça va pas chercher loin dans l'IR ... 500€ si tu es à 10% de Tau global ... plus les arrières ... tu dois pouvoir demander 1000€ super :twisted:

Re: Aide pour API REST IG

par cybermad » 17 mai 2021 13:36

Mais non vous pouvez me titiller 😉
Bon j’ai déjà du tout ré expliquer 20 fois alors que déjà dit dès mon premier post mais c’est pas grave 🤣

Et pour les revenues locatifs çà se passe comment sinon ? Attention tu tu es trompé de forum je crois…

Et donc, mon script est sur mon serveur dédié, ni sous Windows ni sous OS X.
J’ai plusieurs sites et plusieurs e-commerces dessus ça tourne bien. Il tourne sous Debian.
C’est quoi le chown déjà ?😁

En tout cas plus sérieusement, déjà merci à vous deux d’avoir répondu à mon message et d’avoir passé du temps à essayer de m’aider.

Si je trouve (mais c’est peut-être un truc tout ballot en plus…) je viendrais le poster.
En tout cas j’ai besoin de ce Fichu cron alors je me remets dessus ce soir !

Sujets similaires
API REST / STREAM
Fichier(s) joint(s) par FemtoTrader » 22 sept. 2014 10:35 (178 Réponses)
ig rest api - heure des ouvertures et clotures quotidiennes
par falex » 22 avr. 2015 14:50 (3 Réponses)
[PYTHON] Script API IG STREAM + REST
par tcournez » 14 sept. 2015 21:50 (30 Réponses)
IG API : Augmentation du nombre de requet REST
par falex » 04 août 2016 10:31 (9 Réponses)
REST , maj
par brucy » 21 août 2015 18:23 (1 Réponses)
Aide API IG
par Amarantine » 11 juil. 2021 20:07 (6 Réponses)
Cherche Avis sur IG Api Programmable
par ebundy » 23 janv. 2015 16:12 (5 Réponses)
API IG par l'exemple, récupération des cours, trades
par maroxe » 28 janv. 2015 13:39 (8 Réponses)
L2 / API même combat
par Crack » 09 mars 2015 21:49 (4 Réponses)
Utilisation Excel avec API IG
Fichier(s) joint(s) par VK_Trader » 15 mai 2015 02:16 (46 Réponses)