{"id":2110,"date":"2017-12-11T11:56:20","date_gmt":"2017-12-11T09:56:20","guid":{"rendered":"http:\/\/www.void.gr\/kargig\/blog\/?p=2110"},"modified":"2017-12-11T18:38:19","modified_gmt":"2017-12-11T16:38:19","slug":"tormap-world-map-of-tor-nodes-5-years-later","status":"publish","type":"post","link":"https:\/\/www.void.gr\/kargig\/blog\/2017\/12\/11\/tormap-world-map-of-tor-nodes-5-years-later\/","title":{"rendered":"Tormap &#8211; World map of Tor nodes &#8211; 5 years later"},"content":{"rendered":"<p>5 years ago I forked <a href=\"https:\/\/github.com\/moba\/tormap\" target=\"_blank\" rel=\"noopener\">Moritz&#8217;s tormap project<\/a>, updated it a bit and <a href=\"https:\/\/www.void.gr\/kargig\/blog\/2012\/11\/27\/world-city-map-of-tor-nodes\/\">wrote about it<\/a>. <a href=\"https:\/\/tormap.void.gr\" target=\"_blank\" rel=\"noopener\">Tormap<\/a> kept running for years until some changes in googlemaps broke it, not all KMLs were loading as they should. I later on figured out that googlemaps didn&#8217;t like that some of the KML files were larger than 3Mb. I didn&#8217;t have much time to play with it until recently, so a few days ago I decided to make it work again. I used newer googlemaps v3 API calls and compressed KML (KMZ) files to make it\u00a0work. Then <a href=\"https:\/\/twitter.com\/iainlearmonth\" target=\"_blank\" rel=\"noopener\">@iainlearmonth<\/a> and <a href=\"https:\/\/twitter.com\/nusenu_\" target=\"_blank\" rel=\"noopener\">@nusenu_ <\/a> suggested making even more changes&#8230;<\/p>\n<p>Their first suggestion was to use <a href=\"https:\/\/metrics.torproject.org\/onionoo.html\" target=\"_blank\" rel=\"noopener\">onionoo<\/a> instead of parsing consensus on my own and running geoip on it, onionoo already provides that in a nice json output. Their other suggestion was to switch tormap to use <a href=\"https:\/\/www.openstreetmap.org\/\" target=\"_blank\" rel=\"noopener\">OpenStretMap<\/a> instead of googlemaps mostly because googlemaps block some Tor exit nodes and the tiles didn&#8217;t appear on the map when visiting over Tor. Both of these issues are fixed now.<\/p>\n<p>I used <a href=\"http:\/\/leafletjs.com\/\" target=\"_blank\" rel=\"noopener\">leaflet.js<\/a> and a couple of plugins like <a href=\"https:\/\/github.com\/shramov\/leaflet-plugins\" target=\"_blank\" rel=\"noopener\">leaflet-plugins<\/a> (for KML parsing) and <a href=\"https:\/\/github.com\/pointhi\/leaflet-color-markers\" target=\"_blank\" rel=\"noopener\">leaflet-color-markers<\/a> for the switch to OpenStreetMap. I will admit that using googlemaps APIs was far more convenient for someone without any javascript knowledge like me.<\/p>\n<p>Maybe in the next 5 years I will have time again to implement their other suggestion, <a href=\"https:\/\/github.com\/kargig\/tormap\/issues\/2\">creating maps of nodes based on custom searches for relay attributes<\/a>. Unless someone else wants to implement that, feel free to fork it!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>5 years ago I forked Moritz&#8217;s tormap project, updated it a bit and wrote about it. Tormap kept running for years until some changes in googlemaps broke it, not all KMLs were loading as they should. I later on figured out that googlemaps didn&#8217;t like that some of the KML files were larger than 3Mb. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ep_exclude_from_search":false,"footnotes":""},"categories":[5,3,8,4],"tags":[623,222,536,599,621,622,596,146,474],"class_list":["post-2110","post","type-post","status-publish","format-standard","hentry","category-internet","category-linux","category-networking","category-privacy","tag-googlemaps","tag-javascript","tag-map","tag-networking","tag-openstretmap","tag-osm","tag-privacy","tag-python","tag-tor"],"aioseo_notices":[],"views":10620,"_links":{"self":[{"href":"https:\/\/www.void.gr\/kargig\/blog\/wp-json\/wp\/v2\/posts\/2110","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.void.gr\/kargig\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.void.gr\/kargig\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.void.gr\/kargig\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.void.gr\/kargig\/blog\/wp-json\/wp\/v2\/comments?post=2110"}],"version-history":[{"count":3,"href":"https:\/\/www.void.gr\/kargig\/blog\/wp-json\/wp\/v2\/posts\/2110\/revisions"}],"predecessor-version":[{"id":2114,"href":"https:\/\/www.void.gr\/kargig\/blog\/wp-json\/wp\/v2\/posts\/2110\/revisions\/2114"}],"wp:attachment":[{"href":"https:\/\/www.void.gr\/kargig\/blog\/wp-json\/wp\/v2\/media?parent=2110"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.void.gr\/kargig\/blog\/wp-json\/wp\/v2\/categories?post=2110"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.void.gr\/kargig\/blog\/wp-json\/wp\/v2\/tags?post=2110"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}