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

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 Kerviel » 16 mai 2021 02:45

Chaque requete REST (ainsi que la connexion streaming) doivent contenir le token de sécurité.
Ce token est valable 15 minutes.

Lors de ta 1er requete, tu dois le générer.

Ensuite, tu dois le renvoyer dans toutes les requetes qui suivent.

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 Kerviel » 16 mai 2021 08:45

Je connais pas bien CRON... mais ça a l'air d'être du bash ton truc, non ?

Et ton fichier de cookie a l'air vide... Je vois pas le token...

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 Kerviel » 17 mai 2021 03:30

Moi, je peux pas trop te donner de piste car je connais pas trop les technos que tu utilises.

Enfin si, je les connais mais de mon point de vue, c'est complétement scabreux d'utiliser bash et 50 000 appels curl pour cet usage. Tu crée des processus systèmes et des "containeurs" lourd pour ça donc tu n'utilises pas bien les ressources systèmes... En plus, ton truc marchera pas sous Windows... Je sais pas ce que tu veux faire mais c'est pas la bonne techno...

Java est la techno la plus rapide par rapport à ce que j'ai vu de dispo pour l'Api IG...

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

Kerviel,

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

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)
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)
Liens concernant les API IG
par chifounou » 11 sept. 2015 17:04 (0 Réponses)