Jump to content

GROS_FAIGNAN

INpactien
  • Content Count

    405
  • Joined

  • Last visited

Everything posted by GROS_FAIGNAN

  1. qqun sait comment entré du text dans le champ de recherche d'un moteur de recherche vai un code php et recuperer la page de retour correspondante ? [EDIT] en fait je cherche la facon de recuperer la liste des parametre que je doit envoyer en POST pour effectuer ma recherche ^^
  2. sinon y'a aussi peut etre le couple HTTPClient / DomCrawler fournit par symfony, qui devrait peut être suffire, reste a savoir si je vais reussir a trouver manpages et tuto par ce que sur le site de symfony, perso je trouve que c'est pas super la joie.
  3. a tient oui je cherche une methode pour envoyé une requete php (a priori POST donc) qui effectuerai une recherche sur google (qui mettrait un terme de recherche et cliquerai a ma place donc). j'ai chercher des methode sur google pour faire ca mais j'ai rien trouver ^^ ... curieux. pas moyen de trouver ca, qqun pourrait me dire de quel coté je doit cherché ? et comment definir quel param je doit utiliser par exemple ?
  4. vous auriez des source de bot ou de crawler /scraper tout pret, histoire d'avancer un peut plus vite, j'en ai trouver quelque un sur le net mais pas moyen de les faire tourner la pluspart sont plein de bug et ne sont plus maintenus ou avec des sources incomplètes/pas a jours. [EDIT] j'ai parler trop vite, j'en ai trouver qqun : apache lucene, elasticsearch, apache solr, sphinxsearch, dataparksearch, xapian, etc... des avis concernant ces différents moteur ? de preference pour coder en php...^^ (pas trop le choix, python et ruby faut oublier, et javascript pas garanti que ca passe non plus) et ici j'en ai carrement trouver 162 : https://www.findbestopensource.com/tagged/search-engine par contre je veut bien un descriptif des différentes catégories de projet qu'ont peut trouver (genre différence entre moteur de recherche, bot, crawler, spider, full-text, etc...)
  5. $response =$client->request('GET','https://www.digikey.com/product-search/download.csv?FV=-8%7C649&quantity=0&ColumnSort=0&page=1&pageSize=25'); hehe ouai ce serait pratique mais ca marche pas. (error 403 forbidden) idem pour cette forme la $response=file_get_contents('https://www.digikey.com/product-search/download.csv?FV=-8|649&quantity=0&ColumnSort=0&page=1&pageSize=25'); (enfin pas tout a fait, parfois mon script fonctionne plus ou moins mais c'est instable et parfaitement aléatoire)
  6. ca c'est parce que je suis une quiche qui debute 😉 merci Sheepux 😉 me reste plus qu'a reflechir comment ouvrir ce lien via une commande, lire la table et ne pas sauvegarder le fichier
  7. elle sont dispo sur le site... donc je vois pas pourquoi ce serait illégal, c'est des données constructeurs, des datasheet, des ifnos techniques, les prix et quantités pour exemple : https://www.digikey.com/products/capacitors/en c'est les infos dans le tableau, donc rien d’inaccessible au public, mais visiblement protégées contre le scraping, par contre elle sont accessible via l'API, qui n'est cependant pas trop adaptée a mon cas de figure [EDIT] petite appartée, vous auriez quelque bonnes lib sous la main pour la gestion des erreur [EDIT2] $dir[]=array("dir","ls");//Affiche la liste des fichiers et sous-dossiers contenus dans le répertoire. vous voyez une erreur la dedans ?
  8. non,...ma seul interaction utilisateur pour le moment c'est l'authentification chez google (ou digikey ou autre peut importe) qui n'aura jamais lieu puisque la page d'autenthification se sera pas redirigé vers l'utilisateur (qui de plus n'est pas le propriétaire du compte connecter a l'appli). pour faire simple ce que je veut faire : 1) extraire des données chez les grossiste en electronique 2) mettre ces données (après traitement et formatage) a disposition du public, (dans un site web/une appli/ etc...)
  9. humhum, j'avais toujours penser que le but d'une api etant la communication interserveur a profit d'une requete client, mais apparament ca se resueme plus a OAuth qu'a autre chose. comment recuperer les infos qui m'interesse sans utiliser l'api. j'ai tenter de parser le site mais pour l'instant en dehors des erreur de parse et des probleme de maintenance du code que ca va engendrer, j'ai des erreur 403 (forbidden acces) qui ne facilite pas les chose. une autre solution que les API et la parse html pour recuperer les données qui m'interesse ?
  10. est ce que je doit chercher autre part que les API ? qu'est ce que je pourrais trouver d'autre part ce que parser le site pour recup les infos qui m'interesse ca me parrait pas top, et d'autant plus que pour l'instant ca a pas l'air de marcher des masse.
  11. non ca y'es j'ai pigé ce que je comprenais pas, comme le code est passé en parametre de la page connect.php il est disponible sur celle ci et pas sur login.php bah justement >> nulle part
  12. comme dit la doc : Developer application example request (Sandbox) Example request to PartSearch using developer credentials and endpoint (sandbox-api.digikey.com) : GET /Search/v3/Products/p5555-nd HTTP/1.1 Host: sandbox-api.digikey.com X-DIGIKEY-Client-Id: WugAd2A6Lxy3Eu3Mgvov45KUNoguMoUl Authorization: Bearer StgGLw9b3hkwqlWAGBmdYoBNEokm X-DIGIKEY-Locale-Site: US X-DIGIKEY-Locale-Language: en X-DIGIKEY-Locale-Currency: USD X-DIGIKEY-Locale-ShipToCountry: us X-DIGIKEY-Customer-Id: 0 il precise http/1.1 donc j'aurais tendance a dire que non mais peut etre , juste a rajouté le port dans mon URL de destination ? si c'est ca (style api.url:443) j'ai tenter le coup et ca marche pas : error 52 empty response une erreur de certificat ? j'ai mis le meme que celui que j'utilise avec google [EDIT] non c'est ca, fallait juste entrer. https://api.url... ca fonctionne nickel ... merci Cryo 😉 [EDIT] me reste a mettre en place éventuellement le refresh token, mais question avant toute chose. comment puis-je "contourné" la partie "acceptation utilisateur" (par clique de souris j'entend. je m'explique, le code php de connexion a l'API va être exécuté sur un serveur distant qui va ouvrir une connexion chez digikey, et transmettre des infos, mais possiblement plusieurs fois par heure. mon serveur va lui transmettre des infos a un script exécuté sur une application et elle meme connecter a mon serveur. les infos récupérer chez digikey en font partie et sont a la demande de l'utilisateur final. et cet utilisateur n'as aucun rapport avec le compte digikey en question et ne devrait donc logiquement pas avoir d'acceptation a faire . et comme c'est de toute façon mon serveur qui se connecte chez digikey il serait plus simple que cette acceptation soit automatique. a moins de lancer la première connexion manuellement puis de faire un refresh token toute les 25 minute (30 min de validité le tokent digi) je vois pas, et je trouve ca pas terrible. comment faire ... une idée ?
  13. bon j'ai commencer a ecrire le code pour l'API qui m'interesse : connexion sur l'API de digikey tout marche bien au debut : je recupere accessToken et refreshToken facilement je fait un essais via leur "trying tool" (https://developer.digikey.com/products/product-information/partsearch/productdetails?prod=truehttps://developer.digikey.com/products/product-information/partsearch/productdetails?prod=true) et ca marche aussi j'ai bien le bon résultat. mais ensuite c'est la que ca ce gate, lorsque j'essais d'obtenir le meme resultat via insomnia ou en php, ... pas moyen soit des erreur timed out soit des erreur connection refused soit des erreur connexion impossible voici le code en question : $response = $client->request('GET', 'sandbox-api.digikey.com/Search/v3/Products/'.$DPN, [ 'headers' => [ 'X-DIGIKEY-Client-Id'=> DIGIKEY_ID, 'Authorization'=>'Bearer '.$accessToken, 'X-DIGIKEY-Locale-Site'=> 'FR', 'X-DIGIKEY-Locale-Language'=> 'fr', 'X-DIGIKEY-Locale-Currency'=> 'EUR', 'X-DIGIKEY-Locale-ShipToCountry'=> 'fr', 'X-DIGIKEY-Customer-Id'=> 0 ] ]); $response = json_decode($response->getBody()); dump($response); voici le message d'erreur : sur le site de guzzle ont me dit qu'une error 7 = "CURLE_COULDNT_CONNECT (7) Failed to connect() to host or proxy." en gros "...ca marche pas" qqun aurait une idée de la direction dans laquelle cherchée ?
  14. je suppose que ton explication doit correspondre a ceci : https://www.php.net/manual/fr/function.header.php (les commentaire avant le header crées des problèmes ^^ etc...) oui effectivement cette partie je ne l'ai pas encore correctement assimilée: part contre la ou je peche un peut c'est dans la comprenhesion de ma fonction $response = $client->request('POST',$tokenEndpoint, [ 'form_params' => [ 'code'=>$_GET['code'], 'client_id'=> GOOGLE_ID, 'client_secret' =>GOOGLE_SECRET, 'redirect_uri' => $URI, 'grant_type' => 'authorization_code' ] ]); 1) la partie 'code' =>$_GET['code'] , je vois pas du tout comment elle fonctionne : ou vas t'elle le chercher ce 'code' et puis c'est quoi d'ailleur ce code , pas le $tokenEndpoint vue que celui ci est passé en parametre de la fonction. donc ca doit etre le code d'autentification retourné par l'api... 2) l'uri passé en parametre et correspond a l'url de la page dans laquelle est codée la fonction client->request() $currentFolder = "http://localhost/OAuth2_TEST/";//a deplacer en variable d'environnement $URI =$currentFolder.'connect.php'; un peut bizarre
  15. le code est disponible ici https://github.com/grosfaignan/OAuth2_TEST et est fonctionnel sur windows 10 si certain veulent me corriger ou me donnée des idées, il peuvent le faire ^^ le fichier config contenant les identifiants et clefs privées n'est pas disponible, rendez vous sur https://console.cloud.google.com/apis , section identifant
  16. c'est bon j'ai trouver ou était le problème header('Location: http://localhost/OAuth2_TEST/secret.php'); il fallait codé la ligne en entier et pas en relatif. et du coup pas besoin du require et le session_start() fonctionne bien
  17. faudrait l'inclure via quelle fonction ? a l'origine elle est censée être incluse via un passage de paramètres dans le header $_SESSION['email'] = $response->email; header('Location: /secret.php'); (en bas de la page connect) mais chez moi ca ne fonctionne pas (alors que sur la machine du tutorant c'est ok... d'ailleur ^^) j'ai une erreur de type "header already sent" [EDIT] ou deplacement de la fonction header autre part dans le code (pourtant a cette endroit ca a l'air pratique)
  18. voici mes fichier je l'es ai ecrit tel que dans la video : il fonctionne a ceci prêt que : 1) je doit ajouté un require 'secret.php' dans mon fichier connect , sinon j'ai une erreur de type : 2) une fois que c'est fait si je veut supprimé les erreur résiduelle je doit virer la partie session_start() en bas du fichier connect 3) ceci etant j'ai l'impression que la partie session_start() doublon en bas de la page connect.php fait doublon avec la partie session_start() de la page secret.php voici le code login.php (page d'accueuil avec le bouton de connection) : <?php require('config.php') ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X_UA-Compatible" content="id=edge"> <title>Essais OAuth</title> </head> <body> <h1> Se Connecter</h1> <p> <a href="https://accounts.google.com/o/oauth2/v2/auth?scope=email&access_type=online&redirect_uri=<?= urlencode('http://localhost/PrTest/OAuth2_test/connect.php') ?>&response_type=code&client_id=<?=GOOGLE_ID ?>">Se connecter via Google</a> </p> </body> </html> la page config.php qui contien mes clef et id <?php define('GOOGLE_ID','mon_identifiant_googleqqe je n'affiche pas ici'); define('GOOGLE_SECRET', 'mon_code_secret_google_que je n'affiche pas ici'); ?> la page connect.php qui se charge de l'atablissement de la connection OAuth avec google <?php require __DIR__.'\vendor\autoload.php'; require 'config.php'; require 'secret.php'; use GuzzleHttp\Client; $client = new Client([ // You can set any number of default request options. 'timeout' => 2.0, //verification du certificat (téléchargé préalablement sur curl.haxx.se) certificat concernant curl 'verify'=>__DIR__.'/cacert.pem' ]); try { $response =$client->request('GET','https://accounts.google.com/.well-known/openid-configuration'); $discoveryJSON = json_decode((string)$response->getBody()); $tokenEndpoint = $discoveryJSON->token_endpoint; $userInfoEndpt = $discoveryJSON->userinfo_endpoint; $response = $client->request('POST',$tokenEndpoint, [ 'form_params' => [ 'code'=>$_GET['code'], 'client_id'=> GOOGLE_ID, 'client_secret' =>GOOGLE_SECRET, 'redirect_uri' =>'http://localhost/PrTest/OAuth2_test/connect.php', 'grant_type' => 'authorization_code' ] ]); $accessToken = json_decode($response->getBody())->access_token; $response = $client->request('GET', $userInfoEndpt, [ 'headers' => [ 'Authorization' =>'Bearer' . $accessToken ] ]); $response = json_decode($response->getBody()); if($response->email_verified === true) { //-----partie a virer si je veut que le connect n'est pas de warning php-----// /*session_start(); $_SESSION['email'] = $response->email; header('Location: /secret.php'); exit();*/ //---------------------------------------------------------------------------// } } catch(\GuzzleHttp\Exception\ClientException $exception) { dump($exception->getMessage()); } ?> la page secret.php <?php require 'vendor/autoload.php'; session_start(); if (!isset($_SESSION['email'])) { header('location: login.php'); exit(); } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X_UA-Compatible" content="id=edge"> <title>equivalent page secrete tuto https://www.youtube.com/watch?v=I5tFlK5PPjc </title> </head> <body> <h1> cette page ne devrait pas etre accessible</h1> <?php dump($_SESSION) ?> </body> </html>
  19. j'ai fini par trouver un tuto qui me semble intéressant pour démarrer, https://www.youtube.com/watch?v=I5tFlK5PPjc , pour l'instant j'ai reussi a realiser les parties suivantes : enregistrement et recuperation des identifiant (CLIENT_ID & CLIENT_SECRET) sur les services de googlesapi.com creation de mes debut de pages php (elle sont ok) lorsque je clique sur mon bouton se connecter avec google sur ma page php j'ai bien la page google qui s'affiche j'ai bien un token qui s'afficche sur ma page connect (ma REDIRECT_URI) et à’étape suivante les requêtes insomnia fonctionnent. et je recupere bien la clef d'authentification le problème vient ensuite (~vers la minute 19 du tuto) je dois installé les paquet symfony/var-dump (fait) et guzzlehttp/guzzle:6.3.3 (fait aussi) mais une fois que ces paquet sont installé dans mon dossier sous-projet (www/projet/sous-projet), plus rien ne marche, les fonctions symfony et guzzle ne sont pas reconnues et pires les fonction php (type var_dump()) ne sont plus reconnues non plus si qqun peut m'aider ...^^ [EDIT] non c'est bon j'ai trouvé, une erreur de syntaxe a la con;
  20. MDR ont se casse les dent depuis hier a cause des guillemets ^^ la command fonctionne ^^ youpi, merci Minikea :))
  21. non erreur 400 problem parsing json la commande curl -i -H "Authorization: token %token%" -X POST -d '{"name":"Test23","auto_init":true,"private":true}' https://api.github.com/user/repos sort la meme erreur 400 problem parsing json curl 7.55.1 (Windows) libcurl/7.55.1 WinSSL Release-Date: [unreleased] Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp Features: AsynchDNS IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL version 7.55.1 donc
  22. et autant pour moi aussi erreur bad_credential sauf dans un cas set token=my_token sans espace donc et la variable token utilisée %token% dans ce cas j'ai une erreur 400, problem parsing json j'ai tenter de generer un nouveau token, meme erreur 400
  23. heu non j'ai pas que des chiffres dans mon token, j'ai aussi des 'b' des 'd' et des 'f' [EDIT] tester avec % : idem >> bad_credentials
×
×
  • Create New...