====== Faire un programme en C sans écire ce programme avec l'aide de curl et libcurl ====== Vu via Guillaume Valadon : L'option ''--libcurl'' de ''[[wp>fr:CURL|curl]]'' permet de créer un fichier en C qui pourra repter la commande utilisée {{libcurl.png}} ''Curl'' est le puissant utilitaire en ligne de commande qui vous permet de transférer des données vers ou depuis un serveur ou une URL. --> /usr/bin/curl --version curl 7.58.0 (x86_64-pc-linux-gnu) libcurl/7.58.0 OpenSSL/1.1.1 zlib/1.2.11 libidn2/2.0.4 libpsl/0.19.1 (+libidn2/2.0.4) nghttp2/1.30.0 librtmp/2.3 Release-Date: 2018-01-24 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL ''cURL'' est un outil en ligne de commande qui parle un certain nombre de protocoles pour le transfert de fichiers, y compris HTTP, HTPPS, FTP, Secure Copy (SCP), Telnet, et d'autres. Mais en plus de converser avec les terminaux sur Internet depuis la ligne de commande, vous pouvez aussi écrire des programmes simples ou complexes en utilisant ''libcurl'' pour automatiser les tâches des protocoles de la couche application. Cettte page traite de notes sur l'outil en ligne de commande ''cURL'', puis vous montre comment construire un progamme en C en utilisant ''libcurl''. **Enregistrer un fichier avec un nom de fichier par défaut** Chaque fichier qui est servi sur Internet a un nom de fichier. Pour utiliser le même nom de fichier que le nom de fichier téléchargé, utilisez le ''-O''. **Obtenir du code C depuis une requête ''curl'' avec ''--libcurl''** {{screenshot_2020-01-02_curl_-_how_to_use.png}} source : https://curl.haxx.se/docs/manpage.html#--libcurl > « ''libcurl'' est une bibliothèque de fonctions qui sont fournies avec une API C, pour les applications écrites en C. Vous pouvez facilement l'utiliser à partir de C++ aussi, avec seulement quelques considérations (voir libcurl pour les programmeurs C++. Pour les autres langages, il existe des "bindings" qui fonctionnent comme des couches intermédiaires entre ''libcurl'' et les fonctions correspondantes pour le langage particulier que vous choississez » source [[https://bagder.gitbook.io/everything-curl/libcurl|Everything curl]] ====== Débogage ====== Souvent,avec ''curl'' sur un site, vous remarquerez que le site semblet répondre de la même façon à vos demandes de boucles qu'à vos requêtes du navigateur. Vous devez commencer à rendre vos demandes de boucles plus semblables à celles de votre les requêtes du navigateur : * Utilisez l'option ''--trace-ascii'' pour stocker les logs détaillés des requêtes pour une analyse plus facile et une meilleure compréhension * Assurez-vous de vérifier et d'utiliser les cookies lorsque c'est nécessaire (les deux lisant avec ''-b'' et en écrivant avec ''-c'') ===== Sources ===== * Learn to Use CURL Command in Linux With These Examples https://linuxhandbook.com/curl-command-examples * using libcurl https://curl.haxx.se/libcurl/using * libcurl - small example snippets https://curl.haxx.se/libcurl/c/example.html ===== Aller plus loin ===== * a tool to convert curl command lines to Python https://ryan.govost.es/http-translator * You cannot cURL under pressure https://blog.benjojo.co.uk/post/you-cant-curl-under-pressure