Sticky IP to Location

    This site uses cookies. By continuing to browse this site, you are agreeing to our use of cookies. More details

    • IP to Location



      Hier ein Python Rezept, um sich anhand einer IP den Standort (der Einfachheit halber nur das Land) ausgeben zu lassen.
      Ich habe es zufällig in irgendeinem OpenSource Projekt gesehen (keine Ahnung mehr, um was das Teil letztendlich ging) und habe ein paar relevante Teile herausgepickt und ein Hauptprogramm darum gepackt, sodass es von Kommandozeile aus bedient werden kann/muss.
      Der Verweis des Orignals ist natürlich weiterhin enthalten.

      Anmerkung:

      Zugegeben, Speicherschonend ist das Verfahren unten nicht ^^.

      __main.py__

      Python Source Code

      1. import sys
      2. import ip2loc
      3. def printUsage():
      4. print(" usage: python main.py <IP>")
      5. def main():
      6. if len(sys.argv) < 2:
      7. printUsage()
      8. else:
      9. print(" Resolving %s" % sys.argv[1])
      10. print(ip2loc.resolve(sys.argv[1]))
      11. return
      12. if __name__ == '__main__':
      13. main()
      Display All

      Hier die Hilfsroutine.

      __ip2loc.py__

      Python Source Code

      1. # Copyright 2013, 2014 Philipp Winter <phw@nymity.ch>
      2. #
      3. # this file is part of exitmap.
      4. #
      5. # exitmap is free software: you can redistribute it and/or modify
      6. # it under the terms of the GNU General Public License as published by
      7. # the Free Software Foundation, either version 3 of the License, or
      8. # (at your option) any later version.
      9. #
      10. # exitmap is distributed in the hope that it will be useful,
      11. # but WITHOUT ANY WARRANTY; without even the implied warranty of
      12. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
      13. # GNU General Public License for more details.
      14. #
      15. # You should have received a copy of the GNU General Public License
      16. # along with exitmap. If not, see <http://www.gnu.org/licenses/>.
      17. import geoip
      18. def binary_search(begin, ip, end):
      19. middle = int(begin + ((end - begin) / 2))
      20. if ip < int(geoip.db[middle][0]):
      21. if (middle - 1) == end:
      22. return ""
      23. return binary_search(begin, ip, middle - 1)
      24. elif ip > int(geoip.db[middle][1]):
      25. if (middle + 1) == begin:
      26. return ""
      27. return binary_search(middle + 1, ip, end)
      28. else:
      29. return "%s" % geoip.db[middle][2]
      30. def resolve(ip):
      31. d1, d2, d3, d4 = ip.split('.')
      32. return binary_search(0, int(d1) << 24 | int(d2) << 16 |
      33. int(d3) << 8 | int(d4), len(geoip.db) - 1)
      34. [/py]
      35. Und das GeoIP Dictionary.
      36. [size=14][b]__geoip.py__[/b][/size]
      37. [code]
      38. Siehe Code-Datei im Paket-Download. Das Diactionary würde diesen Beitrag sprengen.
      Display All

      ..:: Beispielausgabe ::..



      Für alle, die es einfach und einsatzbereit im Paket haben wollen, hier der Download.
      Anmerkung:

      Ich habe meinen Premium Login gerade nicht zur Hand, weshalb das ein Public Upload ist (kürzere Lebenszeit). Ist der Download also zu irgendeinem Zeitpunkt nicht mehr erreichbar, so schreibt dies unter den Beitrag ODER kontaktiert einen Moderator.

      ..:: DOWNLOAD ::..

      Share-Online : Link