اینجا دو روش را معرفی میکنم که از طریق خطفرمان بتوانید مکان جغرافیایی یک IP را پیدا کنید. روش اول از یک برنامه استفاده میکند که بر اساس یک پایگاه داده و بصورت آفلاین کار میکند و برای شبه یونیکسها شامل گنو/لینوکس،بیاسدی ها و ... در دسترس هست. روش دوم که از curl و یک API استفاده میکند، نیازمند دسترسی به اینترنت هست و روی اکثر سیستمعامل ها قابل استفاده در دسترس هست.
برنامهی geoiplookup و بستهی geoip-bin
این بسته یعنی geoip-bin شامل برنامهی geoiplookup در مخازن اوبونتو موجود هست اما طبیعتا باید برای سایر توزیعها و همچنین شبهیونیکسها شامل بیاسدیها نیز در دسترس باشد. در دبیانبیسها - شامل اوبونتو،مینت و خود دبیان - با استفاده از apt نصبش کنید:
sudo apt install geoip-bin
میتوانید بسته زیر را هم نصب کنید تا اطلاعات بیشتری(شامل شهر و مکان جغرافیایی) بدست آورید:
geoip-database-extra
من هر دو بسته را نصب کردم. حالا مکان جغراقیایی یک IP را اینطور بدست میآوریم:
[11:00:49]:~$ geoiplookup 91.99.101.242
GeoIP Country Edition: IR, Iran, Islamic Republic of
GeoIP City Edition, Rev 1: IR, 26, Tehran, N/A, N/A, 35.726101, 51.330399, 0, 0
GeoIP ASNum Edition: AS16322 Pars Online PJS
طول و عرض جغرافیایی بدست آمده خطا دارد و بسته به نوع IP این خطا ممکن است کم یا زیاد باشد، برای مثال خطا برای یک IP مربوط به شبکه موبایل بیشتر است.
استفاده از curl و ipinfo.io
این روش از ipinfo.io برای بدست آوردن مکان جغرافیایی یک IP استفاده میکند و محدودیت ۱۰۰۰ درخواست در روز وجود دارد. اگر از curl استفاده کنید(یا نرمافزارهای مشابه) این روش در اکثر سیستمعاملهایی که curl برایشان وجود دارد در دسترس هست که این شامل ویندوز،شبهیونیکسها(گنو،لینوکس،بیاسدی) و یونیکسها،داس،نتویر(سن شما به این قد نمیده!)،آتاری و ... میباشد!
curl را میتوانید از اینجا برای سیستمعامل خود دریافت کنید.
خب حالا من از کامپیوتر خودم که در ایران هست استفاده میکنم:
[11:00:44]:~$ curl ipinfo.io/91.99.101.242
<!DOCTYPE html>
<html lang=en>
<meta charset=utf-8>
<meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">
<title>Error 403 (Forbidden)!!1</title>
<style>
*{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}
</style>
<a href=//www.google.com/><span id=logo aria-label=Google></span></a>
<p><b>403.</b> <ins>That’s an error.</ins>
<p>Your client does not have permission to get URL <code>/91.99.101.242</code> from this server. <ins>That’s all we know.</ins>
بنظر میاد مشکلی وجود دارد. از یک کامپیوتر در خارج از ایران کمک میگیرم:
farooqkz@bitcoinshell ~ $ curl ipinfo.io/91.99.101.242
{
"ip": "91.99.101.242",
"hostname": "blog.ir",
"city": "",
"region": "",
"country": "IR",
"loc": "35.6961,51.4231",
"org": "AS16322 Pars Online PJS"
}
فکر میکنم خودتان بتوانید حدس بزنید مشکل از کجا بود!
منبع: http://xmodulo.com/geographic-location-ip-address-command-line.html