Автор Тема: геолокация по IP парсинг с сайта  (Прочитано 331 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн cdjsend [?]

  • Новичок
  • *
  • Сообщений: 47
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Подскажите с какого сайте проще всего спарсить геолокацию и провайдера текущего по IP? или как это определить возможно есть готовое решение простое, желательно не используя функции IE а как то через Inetread, inetgetsource
« Последнее редактирование: Январь 07, 2019, 14:42:12 от cdjsend »

Русское сообщество AutoIt

геолокация по IP парсинг с сайта
« Отправлен: Январь 07, 2019, 14:28:29 »

Помечен как лучший ответ пользователем cdjsend Отправлен Январь 07, 2019, 23:16:34

Оффлайн hedji [?]

  • Продвинутый
  • ***
  • Сообщений: 368
  • Репутация: 69
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: геолокация по IP парсинг с сайта
« Ответ #1, Отправлен: Январь 07, 2019, 20:10:29 »
2ip.ru

Код: AutoIt [Выделить]
$str=BinaryToString(InetRead("https://2ip.ru/", 1), 4)
$location = StringRegExp($str, 'geoip/"/>(.*)</a', 3)
$isp = StringRegExp($str, 'href="/isp/(.*)/">', 3)
MsgBox(0, "", "Локация: " & $location[0] & @CRLF & "Провайдер: " &  $isp[0])
 

« Последнее редактирование: Январь 07, 2019, 20:28:40 от hedji »

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 8082
  • Репутация: 2314
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: геолокация по IP парсинг с сайта
« Ответ #2, Отправлен: Январь 09, 2019, 18:17:50 »
hedji
Немного неправильно возвращает провайдер, так будет корректнее:

Код: AutoIt [Выделить]
$sHtml = BinaryToString(InetRead('https://2ip.ru/', 1), 4)

$sLocation = StringRegExpReplace($sHtml, '(?si).*?geoip/"/>(.*?)</a>.*', '\1')
$sProvider = StringRegExpReplace($sHtml, '(?si).*?<a href="/isp/.*?">\s*(.*?)\s*</a>.*', '\1')

MsgBox(64, '2ip.ru results', StringFormat('Откуда вы: %s\nВаш провайдер: %s', $sLocation, $sProvider))



Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.


«Не оказываю тех. поддержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

Русское сообщество AutoIt

Re: геолокация по IP парсинг с сайта
« Ответ #2 Отправлен: Январь 09, 2019, 18:17:50 »

Оффлайн cdjsend [?]

  • Новичок
  • *
  • Сообщений: 47

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: геолокация по IP парсинг с сайта
« Ответ #3, Отправлен: Январь 10, 2019, 21:57:44 »
подскажите а если сложится такая ситуация что нету доступа к сайту 2ip.ru, можно как то сделать чтобы переменные заполнились цифрой 0, или знаком каким то? именно заполнились, а не завершение скрипта...

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 8082
  • Репутация: 2314
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: геолокация по IP парсинг с сайта
« Ответ #4, Отправлен: Январь 11, 2019, 01:30:12 »
Код: AutoIt [Выделить]
Global $sWebsite = 'https://2ip.ru/'
Global $sLocation = 0
Global $sProvider = 0

$bRead = InetRead($sWebsite, 1)

If $bRead = '' Then
    MsgBox(48, 'Error', $sWebsite & ' does not responding')
Else
    $sHtml = BinaryToString($bRead, 4)
   
    $sLocation = StringRegExpReplace($sHtml, '(?si).*?geoip/"/>(.*?)</a>.*', '\1')
    $sProvider = StringRegExpReplace($sHtml, '(?si).*?<a href="/isp/.*?">\s*(.*?)\s*</a>.*', '\1')
EndIf

MsgBox(64, 'Results', StringFormat('Откуда вы: %s\nВаш провайдер: %s', $sLocation, $sProvider))


Русское сообщество AutoIt

Re: геолокация по IP парсинг с сайта
« Ответ #4 Отправлен: Январь 11, 2019, 01:30:12 »

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 8082
  • Репутация: 2314
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: геолокация по IP парсинг с сайта
« Ответ #5, Отправлен: Январь 11, 2019, 11:50:41 »
С использованием http://ip-api.com/json:

Код: AutoIt [Выделить]
Global $sWebsite = 'http://ip-api.com/json'
Global $sLocation = 0
Global $sProvider = 0

$bRead = InetRead($sWebsite, 1)

If $bRead = '' Then
    MsgBox(48, 'Error', $sWebsite & ' does not responding')
Else
    $sHtml = BinaryToString($bRead, 4)
   
    $sLocation = StringRegExpReplace($sHtml, '(?si).*?"city":"(.*?)","country":"(.*?)".*', '\1, \2')
    $sProvider = StringRegExpReplace($sHtml, '(?si).*?"isp":"(.*?)".*', '\1')
EndIf

MsgBox(64, 'Results', StringFormat('Откуда вы: %s\nВаш провайдер: %s', $sLocation, $sProvider))


Русское сообщество AutoIt

Re: геолокация по IP парсинг с сайта
« Ответ #5 Отправлен: Январь 11, 2019, 11:50:41 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
4 Ответов
3416 Просмотров
Последний ответ Июнь 30, 2012, 23:25:27
от madmasles
4 Ответов
5760 Просмотров
Последний ответ Июль 09, 2012, 10:37:38
от blazzed
8 Ответов
6620 Просмотров
Последний ответ Июль 18, 2012, 12:10:10
от aleksandrovich
0 Ответов
2800 Просмотров
Последний ответ Июль 18, 2012, 10:21:07
от madmasles
57 Ответов
19620 Просмотров
Последний ответ Декабрь 05, 2012, 09:56:34
от k790
20 Ответов
7253 Просмотров
Последний ответ Август 16, 2012, 03:25:59
от Kaster
3 Ответов
3010 Просмотров
Последний ответ Октябрь 02, 2012, 23:20:07
от real_sm
26 Ответов
2836 Просмотров
Последний ответ Июль 28, 2017, 13:22:05
от hedji
1 Ответов
528 Просмотров
Последний ответ Январь 09, 2018, 01:16:52
от Vovsla
10 Ответов
1245 Просмотров
Последний ответ Апрель 27, 2018, 02:38:08
от Glass4217