Геолокация
Модераторы: Olej, adminn, vikos
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Геолокация
Геолокация: GeoClue - это про то как за нашей геолокацией следят.
деанон - это как собрать информацию о ком-то в Интрнет ... но тут мне было некогда и, пока, не преуспел
Где-то была (давно) тема: найти местоположение сервера/ресурса по IP... Но там, во первых, я а). пользовался онлайн сетевыми ресурсами (типа 2ip.ru и подобными - их множество), б). это долго и хлопотно (в сравнении с консольными командами, CLI), в). непонятно какими критериями они при этом пользуются, насколько это достоверно? г). это местоположение радикально меняется использованием любых VPN или сетевых proxy...
Но это всё не то, поэтому нова тема будет такая... : установить местоположение регистратора доменного имени сервера/ресурса по его URL.
В приницпе, интересует и установление местоположения, но уже по конкретному IP.
Всё что я могу извлечь из этого...
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Геолокация
Интерес возникал ранее много раз ... но как-то забывалось.
А здесь возник конкретный тестовый пример:
- набросали мне тут ссылок по одному новому предмету исследований: микробный топливный элемент...
- занимаются этими программами Университет ИТМО (Санкт-Петербург) и КубГУ (Краснодар)...
- а когда я позаглядывал на их ссылки ресурсов, то оказалось, что они регистрированы все по доменным именам сильно (даже диаметрально) отличающимся от местоположений университетов...
Вот и решил порепетировать на этом материале...
Ссылки:
- https://internetofbacteria.org/
- https://www.asiga.com/industry-microfluidics/
- https://www.elveflow.com/microfluidic-r ... finitions/
- ... ну и добавлю туда, для разнообразия, этот вот форум https://linux-ru.ru/index.php, который а). администрируется совсем не из той страны где зарегистрировано доменное имя, а б). хостинг совсем не в той стране, где регистрировался и откуда администрируется
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Геолокация
Код: Выделить всё
olej@R420:~$ host internetofbacteria.org
internetofbacteria.org has address 213.159.214.240
internetofbacteria.org mail is handled by 10 mail.internetofbacteria.org.
internetofbacteria.org mail is handled by 20 mail.internetofbacteria.org.
Код: Выделить всё
olej@R420:~$ whois 213.159.214.240 | grep address
address: 664035, Russia, Irkutsk, Surnova st. 22, office 302
address: 664035
address: Irkutsk
address: RUSSIAN FEDERATION
address: 664035, Russia, Irkutsk, Surnova st. 22, office 302
Код: Выделить всё
olej@R420:~$ host www.asiga.com
www.asiga.com has address 103.152.248.133
Код: Выделить всё
olej@R420:~$ whois 103.152.248.133 | grep address
address: GPO Box 988
address: Melbourne VIC 3001
address: Australia
address: Level 1
address: 222 Beach Road
address: GPO Box 988
address: Melbourne VIC 3001
address: Australia
address: Level 2, 222 Beach Road
address: Level 2, 222 Beach Road
Код: Выделить всё
olej@R420:~$ host www.elveflow.com
www.elveflow.com has address 51.91.18.222
Код: Выделить всё
olej@R420:~$ whois 51.91.18.222 | grep address
address: 2 rue Kellermann
address: 59100
address: Roubaix
address: FRANCE
address: OVH SAS
address: 2 rue Kellermann
address: 59100 Roubaix
address: France
Код: Выделить всё
olej@R420:~$ host linux-ru.ru
linux-ru.ru has address 90.156.230.27
linux-ru.ru mail is handled by 10 mx2.timeweb.ru.
linux-ru.ru mail is handled by 10 mx1.timeweb.ru.
Код: Выделить всё
olej@R420:~$ whois 90.156.230.27 | grep address
address: 22/2 lit.A,Zastavskaya str.
address: 196006, Saint-Petersburg
address: Russia
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Геолокация
Конечно, в нынешнем мире место регистрации доменного имени слабо коррелирует с местоположением ресурса...
(Но, правда, страна регистрации доменного имени довольно сильно коррелирует с намерениями администраторов ресурса ).
И ...
Яблоко от яблони недалеко падает.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Геолокация
Но ссылка, URL - это ещё не доменное имя для получения IP (host, nslookup, dig, ...) - там есть протоколы и они могут быть разными (http://, https://, ftp://, ssh://... ) + непотребные мне путевые имена и параметры...
И мне хотелось бы иметь готовый скрипт, который применяя к URL сразу бавал бы адрес регистрации доменного имени.
Скрипт на bash, Python ... Go - на чём угодно.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Геолокация
Вспоминаю...
urllib.parse — Parse URLs into components
Код: Выделить всё
olej@R420:~$ python
Python 3.10.6 (main, Nov 14 2022, 16:10:14) [GCC 11.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> url1='https://internetofbacteria.org/'
>>> url2='https://www.asiga.com/industry-microfluidics/'
>>> url3='https://www.elveflow.com/microfluidic-reviews/general-microfluidics/microfluidics-definitions/'
>>> url4='https://linux-ru.ru/viewtopic.php?f=38&t=7261&p=29030#p29030'
>>> import urllib
>>>
>>> from urllib.parse import urlparse
>>>
>>> url1
'https://internetofbacteria.org/'
>>> o1 = urlparse(url1)
>>> o1
ParseResult(scheme='https', netloc='internetofbacteria.org', path='/', params='', query='', fragment='')
>>> o1.netloc
'internetofbacteria.org'
>>>
...
>>>
>>> o2 = urlparse(url2)
>>> o3 = urlparse(url3)
>>> o4 = urlparse(url4)
>>>
...
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Геолокация
Функция gethostbyname_ex() модуля socket в Python.
Получение списка IP для доменного имени:
Код: Выделить всё
>>>
>>> import socket
>>> s1 = socket.gethostbyname_ex(o1.netloc)
>>> s1
('internetofbacteria.org', [], ['213.159.214.240'])
>>> s1[2]
['213.159.214.240']
>>> s1[2][0]
'213.159.214.240'
>>>
Если у URL несколько адресов, то их тут будет несколько ... например, для 'http://stackoverflow.com/questions/5343288/get-url' там будет:
Код: Выделить всё
('stackoverflow.com', [], ['151.101.193.69', '151.101.65.69', '151.101.1.69', '151.101.129.69'])
Код: Выделить всё
>>> s2 = socket.gethostbyname_ex(o2.netloc)
>>> s3 = socket.gethostbyname_ex(o3.netloc)
>>> s4 = socket.gethostbyname_ex(o4.netloc)
>>> s2[2]
['103.152.248.133']
>>> s3[2]
['51.91.18.222']
>>> s4[2]
['90.156.230.27']
>>>
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Геолокация
Можно установить пакет DannyCork/python-whois :
Код: Выделить всё
olej@R420:~$ pip install whois
Defaulting to user installation because normal site-packages is not writeable
Collecting whois
Downloading whois-0.9.27.tar.gz (30 kB)
Preparing metadata (setup.py) ... done
Building wheels for collected packages: whois
Building wheel for whois (setup.py) ... done
Created wheel for whois: filename=whois-0.9.27-py3-none-any.whl size=30477 sha256=c2c82fc42c54163dcdfaf947b69f95f966d66a2e8361ac98df74d6c953b011f3
Stored in directory: /home/olej/.cache/pip/wheels/71/17/36/d62eb5bcc416650499a7259d584c11e4a778de5ce0e72a8dbf
Successfully built whois
Installing collected packages: whois
Successfully installed whois-0.9.27
Код: Выделить всё
>>>
>>> import whois
>>>
Код: Выделить всё
>>> domain1 = whois.query(o1.netloc)
we have org
>>> domain2 = whois.query(o2.netloc)
we have com
>>> domain3 = whois.query(o3.netloc)
we have com
>>> domain4 = whois.query(o4.netloc)
we have ru
>>>
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Геолокация
Код: Выделить всё
>>> domain1.__dict__
{'name': 'internetofbacteria.org', 'tld': 'org', 'registrar': 'Hosting Concepts B.V. d/b/a Registrar.eu', 'registrant_country': 'RU', 'creation_date': datetime.datetime(2020, 7, 16, 1, 13, 17), 'expiration_date': datetime.datetime(2023, 7, 16, 1, 13, 17), 'last_updated': None, 'status': 'clientTransferProhibited https://icann.org/epp#clientTransferProhibited', 'statuses': ['clientTransferProhibited https://icann.org/epp#clientTransferProhibited'], 'dnssec': False, 'name_servers': ['ns1.firstvds.ru', 'ns2.firstvds.ru'], 'registrant': '', 'emails': ['abuse@registrar.eu']}
Код: Выделить всё
>>> list(domain1.__dict__.keys())
['name', 'tld', 'registrar', 'registrant_country', 'creation_date', 'expiration_date', 'last_updated', 'status', 'statuses', 'dnssec', 'name_servers', 'registrant', 'emails']
Здесь меньше ключевых полей, чем в выводе команды GNU whois ... но уже кое-что:
Код: Выделить всё
>>>
>>> domain1.registrant_country
'RU'
>>> domain2.registrant_country
'AU'
>>> domain3.registrant_country
'FR'
>>> domain4.registrant_country
''
>>>
Код: Выделить всё
>>>
>>> domain1.registrar
'Hosting Concepts B.V. d/b/a Registrar.eu'
>>> domain2.registrar
'Webcentral Group Limited dba Melbourne IT'
>>> domain3.registrar
'OVH sas'
>>> domain4.registrar
'TIMEWEB-RU'
>>>
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Геолокация
Но для меня открылись удивительные вещи в whois
Вот для этого хоста (этот вот форум):
Код: Выделить всё
olej@R420:~/2023/own.BOOKs/NatioLang/natiolang.cod/regex.cod$ host linux-ru.ru
linux-ru.ru has address 90.156.230.27
linux-ru.ru mail is handled by 10 mx1.timeweb.ru.
linux-ru.ru mail is handled by 10 mx2.timeweb.ru.
Код: Выделить всё
olej@R420:~/2023/own.BOOKs/NatioLang/natiolang.cod/regex.cod$ whois linux-ru.ru
% TCI Whois Service. Terms of use:
% https://tcinet.ru/documents/whois_ru_rf.pdf (in Russian)
% https://tcinet.ru/documents/whois_su.pdf (in Russian)
domain: LINUX-RU.RU
nserver: ns1.timeweb.ru.
nserver: ns2.timeweb.ru.
nserver: ns3.timeweb.org.
nserver: ns4.timeweb.org.
state: REGISTERED, DELEGATED, UNVERIFIED
person: Private Person
registrar: TIMEWEB-RU
admin-contact: http://timeweb.name/contact-admin
created: 2018-07-03T18:55:08Z
paid-till: 2023-07-03T18:55:08Z
free-date: 2023-08-03
source: TCI
Last updated on 2023-03-16T14:36:31Z
Код: Выделить всё
olej@R420:~/2023/own.BOOKs/NatioLang/natiolang.cod/regex.cod$ whois 90.156.230.27
% This is the RIPE Database query service.
% The objects are in RPSL format.
%
% The RIPE Database is subject to Terms and Conditions.
% See http://www.ripe.net/db/support/db-terms-conditions.pdf
% Note: this output has been filtered.
% To receive output for a database update, use the "-B" flag.
% Information related to '90.156.230.0 - 90.156.230.255'
% Abuse contact for '90.156.230.0 - 90.156.230.255' is 'abuse@timeweb.ru'
inetnum: 90.156.230.0 - 90.156.230.255
netname: TW-VDS-KZ
geofeed: https://geofeed.timeweb.net/geofeed.csv
country: KZ
admin-c: TMWB-RIPE
tech-c: TMWB-RIPE
abuse-c: TMWB-RIPE
status: ASSIGNED PA
mnt-by: TIMEWEB-MNT
created: 2022-12-14T06:39:43Z
last-modified: 2022-12-19T06:26:34Z
source: RIPE
role: TimeWeb Co. Ltd. Role Account
address: 22/2 lit.A,Zastavskaya str.
address: 196006, Saint-Petersburg
address: Russia
phone: +7 812 2481081
phone: +7 495 0331081
abuse-mailbox: abuse@timeweb.ru
admin-c: AAB215-RIPE
admin-c: KRON
tech-c: AAB215-RIPE
tech-c: AA39263-RIPE
tech-c: AG26308-RIPE
tech-c: KRON
nic-hdl: TMWB-RIPE
mnt-by: TIMEWEB-MNT
created: 2008-03-18T10:36:42Z
last-modified: 2022-03-05T06:49:37Z
source: RIPE # Filtered
% Information related to '90.156.230.0/24AS48716'
route: 90.156.230.0/24
origin: AS48716
mnt-by: TIMEWEB-MNT
created: 2022-12-19T06:25:47Z
last-modified: 2022-12-19T06:25:47Z
source: RIPE
% This query was served by the RIPE Database Query Service version 1.106 (SHETLAND)
А пакет Python просто при запросе информации по IP - просто слетает по ошибке:
Код: Выделить всё
>>> domain = whois.query("90.156.230.27")
we DONT have 27
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/olej/.local/lib/python3.10/site-packages/whois/__init__.py", line 233, in query
tld, dl = fromDomainStringToTld(domain, internationalized, verbose)
File "/home/olej/.local/lib/python3.10/site-packages/whois/__init__.py", line 96, in fromDomainStringToTld
tld = filterTldToSupportedPattern(domain, d, verbose)
File "/home/olej/.local/lib/python3.10/site-packages/whois/_0_init_tld.py", line 47, in filterTldToSupportedPattern
raise UnknownTld(msg)
whois.exceptions.UnknownTld: The TLD 27 is currently not supported by this package. Use validTlds() to see what toplevel domains are supported.
>>>
Код: Выделить всё
>>> domain = whois.query("linux-ru.ru")
we have ru
>>> domain2.__dict__
{'name': 'asiga.com', 'tld': 'com', 'registrar': 'Webcentral Group Limited dba Melbourne IT', 'registrant_country': 'AU', 'creation_date': datetime.datetime(2005, 8, 23, 18, 15, 38), 'expiration_date': datetime.datetime(2023, 8, 23, 18, 15, 38), 'last_updated': datetime.datetime(2022, 8, 15, 15, 59, 5), 'status': 'clientTransferProhibited https://icann.org/epp#clientTransferProhibited', 'statuses': ['clientTransferProhibited https://icann.org/epp#clientTransferProhibited', 'clientUpdateProhibited https://icann.org/epp#clientUpdateProhibited'], 'dnssec': False, 'name_servers': ['ns1.linode.com', 'ns2.linode.com', 'ns3.linode.com', 'ns4.linode.com', 'ns5.linode.com'], 'registrant': '', 'emails': ['abuse@melbourneit.com.au']}
>>>
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей