{"id":1087,"date":"2021-03-02T20:46:29","date_gmt":"2021-03-02T19:46:29","guid":{"rendered":"https:\/\/blog.tiraquelibras.com\/?p=1087"},"modified":"2022-01-31T11:49:26","modified_gmt":"2022-01-31T10:49:26","slug":"ipinfo-io-desde-bash-python-y-gui-python-tkinter-para-windows-y-debian","status":"publish","type":"post","link":"https:\/\/blog.tiraquelibras.com\/?p=1087","title":{"rendered":"IPInfo.io desde Bash, Python y GUI (Python TKinter) para Windows y Debian"},"content":{"rendered":"\n<p>Existen muchos m\u00e9todos y servicios para obtener informaci\u00f3n sobre una direcci\u00f3n IP. En esta entrada utilizaremos el servicio que ofrece&nbsp;<strong>IPInfo.io<\/strong>.<\/p>\n\n\n\n<p>Explicaremos como utilizar su servicio desde&nbsp;<strong>BASH<\/strong>,&nbsp;<strong>Python<\/strong>&nbsp;y mediante el uso de una APP de escritorio desarrollada por nosotros escrita en&nbsp;<strong>Python TKinter<\/strong>&nbsp;para&nbsp;<em><strong>Windows<\/strong><\/em>&nbsp;y&nbsp;<em><strong>Debian<\/strong><\/em>.<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_76 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Tabla de contenidos<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-69f38254c7dca\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-69f38254c7dca\"  aria-label=\"Alternar\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=1087\/#Que_es_IPInfoio\"  rel=\"nofollow\" target=\"_blank\">Qu\u00e9 es IPInfo.io<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=1087\/#Uso_desde_BASH\"  rel=\"nofollow\" target=\"_blank\">Uso desde BASH<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=1087\/#Uso_desde_Python\"  rel=\"nofollow\" target=\"_blank\">Uso desde Python<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=1087\/#GUI_%C2%ABIPInformation%C2%BB\"  rel=\"nofollow\" target=\"_blank\">GUI \u00abIPInformation\u00bb<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=1087\/#Windows\"  rel=\"nofollow\" target=\"_blank\">Windows<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=1087\/#Linux_Debian\"  rel=\"nofollow\" target=\"_blank\">Linux Debian<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7 external external_icon\" href=\"https:\/\/blog.tiraquelibras.com\/?p=1087\/#Enlaces_de_interes\"  rel=\"nofollow\" target=\"_blank\">Enlaces de inter\u00e9s<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\" id=\"qu\u00e9-es-ipinfoio\"><span class=\"ez-toc-section\" id=\"Que_es_IPInfoio\"><\/span>Qu\u00e9 es IPInfo.io<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Fundada en 2013 por Ben Dowling, exingeniero de Facebook, es una fuente de informaci\u00f3n para&nbsp;<em>Geolcalizaci\u00f3n<\/em>&nbsp;e informaci\u00f3n detallada de direccionamiento IP. Dispone de cuentas de pago y gratuitas, siendo el l\u00edmite para esta \u00faltima de&nbsp;<strong>1K<\/strong>&nbsp;consultas al d\u00eda o&nbsp;<strong>50K<\/strong>&nbsp;consultas al mes. Tambi\u00e9n permite realizar consultas sin cuenta alguna creada, tal y como indican en&nbsp;<a href=\"https:\/\/ipinfo.io\/missingauth\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" class=\"external external_icon\">este enlace<\/a>, pero recomiendan crear una cuenta sin coste.<\/p>\n\n\n\n<p>Para obtener una cuenta gratuita nos tendremos que registrar en su&nbsp;<a href=\"https:\/\/ipinfo.io\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" class=\"external external_icon\">Web<\/a>&nbsp;y una vez accedamos a nuestar cuenta obtener el&nbsp;<em><strong>Token<\/strong><\/em>&nbsp;para enviar las consultas.<\/p>\n\n\n\n<p>Los resultados son recibidos en formato&nbsp;<em><strong>JSON<\/strong><\/em>, como veremos a continuaci\u00f3n.<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"uso-desde-bash\"><span class=\"ez-toc-section\" id=\"Uso_desde_BASH\"><\/span>Uso desde BASH<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Podemos hacer uso de la consola de&nbsp;<strong>BASH<\/strong>&nbsp;para realizar consultas.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Sin token:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\"><code>curl https:\/\/ipinfo.io\/8.8.8.8\/json\n {\n   \"ip\": \"8.8.8.8\",\n   \"hostname\": \"dns.google\",\n   \"anycast\": true,\n   \"city\": \"Mountain View\",\n   \"region\": \"California\",\n   \"country\": \"US\",\n   \"loc\": \"37.4056,-122.0775\",\n   \"org\": \"AS15169 Google LLC\",\n   \"postal\": \"94043\",\n   \"timezone\": \"America\/Los_Angeles\",\n   \"readme\": \"https:\/\/ipinfo.io\/missingauth\"\n }<\/code><\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Con Token, se dispone de varias formas de enviar consultas. Recuerda indicar el <strong>Token<\/strong> de tu cuenta:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"bash\" class=\"language-bash\">TOKEN='nuestro_token'\n\n# Basic Auth\ncurl -u $TOKEN: https:\/\/ipinfo.io\/8.8.8.8\n {\n   \"ip\": \"8.8.8.8\",\n   \"hostname\": \"dns.google\",\n   \"anycast\": true,\n   \"city\": \"Mountain View\",\n   \"region\": \"California\",\n   \"country\": \"US\",\n   \"loc\": \"37.4056,-122.0775\",\n   \"org\": \"AS15169 Google LLC\",\n   \"postal\": \"94043\",\n   \"timezone\": \"America\/Los_Angeles\"\n }\n\n# Bearer Token\ncurl -H \"Authorization: Bearer $TOKEN\" https:\/\/ipinfo.io\/8.8.8.8\n {\n   \"ip\": \"8.8.8.8\",\n   \"hostname\": \"dns.google\",\n   \"anycast\": true,\n   \"city\": \"Mountain View\",\n   \"region\": \"California\",\n   \"country\": \"US\",\n   \"loc\": \"37.4056,-122.0775\",\n   \"org\": \"AS15169 Google LLC\",\n   \"postal\": \"94043\",\n   \"timezone\": \"America\/Los_Angeles\"\n }\n\n# Token query parameter in URL\ncurl https:\/\/ipinfo.io\/8.8.8.8\/?token=$TOKEN\n {\n   \"ip\": \"8.8.8.8\",\n   \"hostname\": \"dns.google\",\n   \"anycast\": true,\n   \"city\": \"Mountain View\",\n   \"region\": \"California\",\n   \"country\": \"US\",\n   \"loc\": \"37.4056,-122.0775\",\n   \"org\": \"AS15169 Google LLC\",\n   \"postal\": \"94043\",\n   \"timezone\": \"America\/Los_Angeles\"\n }<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Uso_desde_Python\"><\/span>Uso desde Python<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Tambi\u00e9n podemos hacer uso del lenguaje <strong>Python<\/strong> para enviar las consultas, mediante la librer\u00eda <strong><em>requests<\/em><\/strong>.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Sin token:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">&gt;&gt;&gt; improt requests\n&gt;&gt;&gt; response = requests.get('https:\/\/ipinfo.io\/8.8.8.8\/json')\n&gt;&gt;&gt; response.json()\n{'org': 'AS15169 Google LLC', 'readme': 'https:\/\/ipinfo.io\/missingauth', 'ip': '8.8.8.8', 'timezone': 'America\/Los_Angeles', 'city': 'Mountain View', 'country': 'US', 'anycast': True, 'region': 'California', 'loc': '37.4056,-122.0775', 'hostname': 'dns.google', 'postal': '94043'}         <\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Con Token, se dispone de varias formas de enviar consultas. Recuerda indicar el <strong>Token<\/strong> de tu cuenta:<\/li><\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code lang=\"python\" class=\"language-python\">&gt;&gt;&gt; import requests\n&gt;&gt;&gt; from requests.auth import HTTPBasicAuth\n&gt;&gt;&gt; TOKEN='nuestro_token'  \n       \n# Basic Auth\n&gt;&gt;&gt; response = requests.get('https:\/\/ipinfo.io\/8.8.8.8', auth=HTTPBasicAuth(TOKEN,''))\n&gt;&gt;&gt; response.json()\n{'org': 'AS15169 Google LLC', 'ip': '8.8.8.8', 'timezone': 'America\/Los_Angeles', 'city': 'Mountain View', 'country': 'US', 'anycast': True, 'region': 'California', 'loc': '37.4056,-122.0775', 'hostname': 'dns.google', 'postal': '94043'}         \n\n# Bearer Token\n&gt;&gt;&gt; response = requests.get('https:\/\/ipinfo.io\/8.8.8.8', headers={'Authorization': 'Bearer {}'.format(TOKEN)})\n&gt;&gt;&gt; response.json()\n{'org': 'AS15169 Google LLC', 'ip': '8.8.8.8', 'timezone': 'America\/Los_Angeles', 'city': 'Mountain View', 'country': 'US', 'anycast': True, 'region': 'California', 'loc': '37.4056,-122.0775', 'hostname': 'dns.google', 'postal': '94043'}         \n \n# Token query parameter in URL\n&gt;&gt;&gt; response = requests.get('https:\/\/ipinfo.io\/8.8.8.8\/?token={}'.format(TOKEN))\n&gt;&gt;&gt; response.json()\n{'org': 'AS15169 Google LLC', 'ip': '8.8.8.8', 'timezone': 'America\/Los_Angeles', 'city': 'Mountain View', 'country': 'US', 'anycast': True, 'region': 'California', 'loc': '37.4056,-122.0775', 'hostname': 'dns.google', 'postal': '94043'}         <\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"GUI_%C2%ABIPInformation%C2%BB\"><\/span>GUI \u00abIPInformation\u00bb<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Tambi\u00e9n podemos hacer uso de una interfaz gr\u00e1fica mediante el uso de una aplicaci\u00f3n gr\u00e1fica que hemos desarrollado con <strong>Python TKinter<\/strong>, llamada <strong>IPInformation<\/strong> en su versi\u00f3n <strong>v1.0<\/strong> para <em>64 bits<\/em>, para entornos <strong><em>Windows<\/em><\/strong> y <strong><em>Linux Debian<\/em><\/strong>, la cual podemos descargar en los siguientes enlaces:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/blog.tiraquelibras.com\/wp-content\/uploads\/2022\/01\/ipinformation.zip\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" class=\"external external_icon\">APP Windows<\/a>, instalador.<\/li><li><a href=\"https:\/\/blog.tiraquelibras.com\/wp-content\/uploads\/2022\/01\/ipinformation_x64-v1.0-debian.zip\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" class=\"external external_icon\">APP Linux Debian<\/a>, programa.<\/li><\/ul>\n\n\n\n<p>El programa es muy sencillo de utilizar, permitiendo b\u00fasquedas de IPs concretas (\/32), utilizando una cuenta gratuita (opci\u00f3n con <strong><em>Token<\/em><\/strong>) o una consulta sin cuenta alguna creada. Tambi\u00e9n permite exportar el resultado a <em>PDF<\/em> o copiar en el portapapeles.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"418\" height=\"576\" src=\"https:\/\/blog.tiraquelibras.com\/wp-content\/uploads\/2021\/03\/img-1.png\" alt=\"\" class=\"wp-image-1088\"\/><figcaption>Inicio del programa<\/figcaption><\/figure><\/div>\n\n\n\n<p>Un ejemplo de consulta podemos verlo en la siguiente imagen:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"418\" height=\"576\" src=\"https:\/\/blog.tiraquelibras.com\/wp-content\/uploads\/2021\/03\/img-2.png\" alt=\"\" class=\"wp-image-1089\"\/><figcaption>Resultado de b\u00fasqueda<\/figcaption><\/figure><\/div>\n\n\n\n<p>Con la tecla&nbsp;<strong>ESC<\/strong>&nbsp;cerramos las ventanas emergentes y el programa.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"windows\"><span class=\"ez-toc-section\" id=\"Windows\"><\/span>Windows<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>En&nbsp;<em><strong>Windows<\/strong><\/em>&nbsp;disponemos de un instalardor muy sencillo. Tambi\u00e9n dispone de un&nbsp;<em>desinstalador<\/em>&nbsp;para borrar cualquier rastro del programa en nuestro equipo. No requiere configuraci\u00f3n alguna tras su instalaci\u00f3n.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"linux-debian\"><span class=\"ez-toc-section\" id=\"Linux_Debian\"><\/span>Linux Debian<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>En\u00a0<em><strong>Linux<\/strong><\/em>\u00a0debemos de realizar algunas tareas que se detallan en el archivo\u00a0<em><strong>README.MD<\/strong><\/em>.<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"enlaces-de-inter\u00e9s\"><span class=\"ez-toc-section\" id=\"Enlaces_de_interes\"><\/span>Enlaces de inter\u00e9s<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>IPInfo.io&nbsp;<a href=\"https:\/\/ipinfo.io\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" class=\"external external_icon\">oficial<\/a>.<\/p>\n\n\n\n<p>IPInfo.io&nbsp;<a href=\"https:\/\/ipinfo.io\/developers\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" class=\"external external_icon\">developers<\/a>.<\/p>\n\n\n\n<p>IPInfo.io&nbsp;<a href=\"https:\/\/ipinfo.io\/missingauth\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" class=\"external external_icon\">free account<\/a>.<\/p>\n\n\n\n<p>APP de escritorio para\u00a0<a href=\"https:\/\/blog.tiraquelibras.com\/wp-content\/uploads\/2022\/01\/ipinformation.zip\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" class=\"external external_icon\">Windows<\/a>.<\/p>\n\n\n\n<p>APP de escritorio para\u00a0<a rel=\"noreferrer noopener nofollow\" href=\"https:\/\/blog.tiraquelibras.com\/wp-content\/uploads\/2022\/01\/ipinformation_x64-v1.0-debian.zip\" target=\"_blank\" class=\"external external_icon\">Debian<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Existen muchos m\u00e9todos y servicios para obtener informaci\u00f3n sobre una direcci\u00f3n IP. En esta entrada utilizaremos el servicio que ofrece&nbsp;IPInfo.io. Explicaremos como utilizar su servicio<span class=\"read-more-link\"><a class=\"read-more\" href=\"https:\/\/blog.tiraquelibras.com\/?p=1087\">Read More<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":1094,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,10,22],"tags":[122,94,121,27],"class_list":["post-1087","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programacion","category-sistemas","category-ti","tag-bash","tag-geoip","tag-gui","tag-python"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/posts\/1087","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1087"}],"version-history":[{"count":1,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/posts\/1087\/revisions"}],"predecessor-version":[{"id":1166,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/posts\/1087\/revisions\/1166"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=\/wp\/v2\/media\/1094"}],"wp:attachment":[{"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1087"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1087"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.tiraquelibras.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1087"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}