mirror of
https://github.com/Ground-Zerro/DomainMapper.git
synced 2025-12-10 01:47:18 +07:00
Merge branch 'main' of https://github.com/Ground-Zerro/DomainMapper
This commit is contained in:
@@ -2,6 +2,8 @@
|
|||||||
<details>
|
<details>
|
||||||
<summary>Что нового (нажать, чтобы открыть)</summary>
|
<summary>Что нового (нажать, чтобы открыть)</summary>
|
||||||
|
|
||||||
|
- Добавлен сервис Jetbrains. [Запрос @SocketSomeone](https://github.com/Ground-Zerro/DomainMapper/issues/40)
|
||||||
|
- Добавлен сервис Discord. [Запрос @AHuMex](https://github.com/Ground-Zerro/DomainMapper/issues/38)
|
||||||
- [Комбинированный режим объединения IP-адресов в подсеть.](https://github.com/Ground-Zerro/DomainMapper/issues/36)
|
- [Комбинированный режим объединения IP-адресов в подсеть.](https://github.com/Ground-Zerro/DomainMapper/issues/36)
|
||||||
- Возможность загрузки списков сервисов и DNS-серверов из локального файла. [Запрос @Noksa](https://github.com/Ground-Zerro/DomainMapper/issues/26)
|
- Возможность загрузки списков сервисов и DNS-серверов из локального файла. [Запрос @Noksa](https://github.com/Ground-Zerro/DomainMapper/issues/26)
|
||||||
- Вспомагательные [утилиты](https://github.com/Ground-Zerro/DomainMapper/tree/main/utilities) для поиска субдоменов.
|
- Вспомагательные [утилиты](https://github.com/Ground-Zerro/DomainMapper/tree/main/utilities) для поиска субдоменов.
|
||||||
@@ -40,6 +42,8 @@
|
|||||||
- Search engines
|
- Search engines
|
||||||
- [Github сopilot](https://github.com/features/copilot)
|
- [Github сopilot](https://github.com/features/copilot)
|
||||||
- Twitch
|
- Twitch
|
||||||
|
- Discord
|
||||||
|
- Jetbrains
|
||||||
- Личный список
|
- Личный список
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|||||||
@@ -25,6 +25,8 @@ localdns = yes
|
|||||||
# Search engines - поисковые системы
|
# Search engines - поисковые системы
|
||||||
# Github Copilot - ИИ помощник от github
|
# Github Copilot - ИИ помощник от github
|
||||||
# Twitch
|
# Twitch
|
||||||
|
# Discord
|
||||||
|
# Jetbrains
|
||||||
# custom - Custom DNS list, это файл "custom-dns-list.txt" расположенный в одном каталоге со скриптом
|
# custom - Custom DNS list, это файл "custom-dns-list.txt" расположенный в одном каталоге со скриптом
|
||||||
service =
|
service =
|
||||||
|
|
||||||
|
|||||||
@@ -13,4 +13,6 @@ Google: https://raw.githubusercontent.com/Ground-Zerro/DomainMapper/main/platfor
|
|||||||
Torrent Truckers: https://raw.githubusercontent.com/Ground-Zerro/DomainMapper/main/platforms/dns-ttruckers.txt
|
Torrent Truckers: https://raw.githubusercontent.com/Ground-Zerro/DomainMapper/main/platforms/dns-ttruckers.txt
|
||||||
Search engines: https://raw.githubusercontent.com/Ground-Zerro/DomainMapper/main/platforms/dns-search-engines.txt
|
Search engines: https://raw.githubusercontent.com/Ground-Zerro/DomainMapper/main/platforms/dns-search-engines.txt
|
||||||
Github Copilot: https://raw.githubusercontent.com/Ground-Zerro/DomainMapper/main/platforms/dns-github-сopilot.txt
|
Github Copilot: https://raw.githubusercontent.com/Ground-Zerro/DomainMapper/main/platforms/dns-github-сopilot.txt
|
||||||
Twitch: https://raw.githubusercontent.com/Ground-Zerro/DomainMapper/main/platforms/dns-twitch.txt
|
Twitch: https://raw.githubusercontent.com/Ground-Zerro/DomainMapper/main/platforms/dns-twitch.txt
|
||||||
|
Discord: https://raw.githubusercontent.com/Ground-Zerro/DomainMapper/refs/heads/main/platforms/dns-discord.txt
|
||||||
|
Jetbrains: https://raw.githubusercontent.com/Ground-Zerro/DomainMapper/refs/heads/main/platforms/dns-jetbrains.txt
|
||||||
|
|||||||
1488
platforms/dns-discord.txt
Normal file
1488
platforms/dns-discord.txt
Normal file
File diff suppressed because it is too large
Load Diff
97
platforms/dns-jetbrains.txt
Normal file
97
platforms/dns-jetbrains.txt
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
jetbrains.com.cn
|
||||||
|
jb.gg
|
||||||
|
myjetbrains.com
|
||||||
|
jetbrains.com
|
||||||
|
intellij.net
|
||||||
|
academy.jetbrains.com
|
||||||
|
account.jetbrains.com
|
||||||
|
adobe.fls.jetbrains.com
|
||||||
|
amazon.fls.jetbrains.com
|
||||||
|
ap-help.api.jetbrains.com
|
||||||
|
api-test.sandbox-resellers.jetbrains.com
|
||||||
|
autoconfig.api.jetbrains.com
|
||||||
|
autodiscover.api.jetbrains.com
|
||||||
|
blog.jetbrains.com
|
||||||
|
blogs.jetbrains.com
|
||||||
|
ca.jetbrains.com
|
||||||
|
cai.jetbrains.com
|
||||||
|
cloudconfig.jetbrains.com
|
||||||
|
code-with-me.jetbrains.com
|
||||||
|
code2art.jetbrains.com
|
||||||
|
codewithme-lobby-production.api.jetbrains.com
|
||||||
|
codewithme-lobby-staging.api.jetbrains.com
|
||||||
|
codewithme-lobby.api.jetbrains.com
|
||||||
|
codewithme-relay-europe-north1-1.api.jetbrains.com
|
||||||
|
codewithme-relay-europe-north1-2.api.jetbrains.com
|
||||||
|
comments.blog.jetbrains.com
|
||||||
|
configr.jetbrains.com
|
||||||
|
confluence.jetbrains.com
|
||||||
|
datalore-forum.jetbrains.com
|
||||||
|
datalore.jetbrains.com
|
||||||
|
dotcover-support.jetbrains.com
|
||||||
|
dotmemory-support.jetbrains.com
|
||||||
|
dotnet-ea.services.jetbrains.com
|
||||||
|
dotpeek-support.jetbrains.com
|
||||||
|
dottrace-support.jetbrains.com
|
||||||
|
download-cdn.jetbrains.com
|
||||||
|
dunnhumby.fls.jetbrains.com
|
||||||
|
ea.jetbrains.com
|
||||||
|
eap.jetbrains.com
|
||||||
|
employee-guides.jetbrains.com
|
||||||
|
fleet-relay.api.jetbrains.com
|
||||||
|
ge.jetbrains.com
|
||||||
|
geo2.datalore.jetbrains.com
|
||||||
|
guide.master-zdchint.mau.jetbrains.com
|
||||||
|
guide.staging-zdchint.mau.jetbrains.com
|
||||||
|
hacktoberfest2020.mau.jetbrains.com
|
||||||
|
handle.prod.csat.mau.jetbrains.com
|
||||||
|
handle.staging.csat.mau.jetbrains.com
|
||||||
|
hello.jetbrains.com
|
||||||
|
ij-perf.jetbrains.com
|
||||||
|
index-cdn.jetbrains.com
|
||||||
|
int.api.jetbrains.com
|
||||||
|
internship.jetbrains.com
|
||||||
|
jb-team.fls.jetbrains.com
|
||||||
|
jbstats.jetbrains.com
|
||||||
|
jetarchive.jetbrains.com
|
||||||
|
jetbrains.com
|
||||||
|
jetpeople.jetbrains.com
|
||||||
|
local.api.jetbrains.com
|
||||||
|
lp.jetbrains.com
|
||||||
|
lservice.jetbrains.com
|
||||||
|
mail.jetbrains.com
|
||||||
|
marketplace.jetbrains.com
|
||||||
|
merchandise.jetbrains.com
|
||||||
|
mkto-mailer.jetbrains.com
|
||||||
|
mta-sts.jetbrains.com
|
||||||
|
oauth.fls.jetbrains.com
|
||||||
|
oauth2-proxy-api.api.jetbrains.com
|
||||||
|
package-search.jetbrains.com
|
||||||
|
package-search.services.jetbrains.com
|
||||||
|
plugins.jetbrains.com
|
||||||
|
renew-your-ssl-certificate.jetbrains.com
|
||||||
|
resharper-plugins.jetbrains.com
|
||||||
|
resources.jetbrains.com
|
||||||
|
skyscanner.fls.jetbrains.com
|
||||||
|
slack-bdt.mau.jetbrains.com
|
||||||
|
slack-mps.jetbrains.com
|
||||||
|
slack.jetbrains.com
|
||||||
|
spotify.fls.jetbrains.com
|
||||||
|
stackexchange.master-zdchint.mau.jetbrains.com
|
||||||
|
stackexchange.staging-zdchint.mau.jetbrains.com
|
||||||
|
staging.zdviewcount.mau.jetbrains.com
|
||||||
|
support.jetbrains.com
|
||||||
|
sv.fls.jetbrains.com
|
||||||
|
teamcity-support.jetbrains.com
|
||||||
|
teamcity.jetbrains.com
|
||||||
|
tiles.datalore.jetbrains.com
|
||||||
|
tiles2.datalore.jetbrains.com
|
||||||
|
uploads.jetbrains.com
|
||||||
|
uploads.services.jetbrains.com
|
||||||
|
upsource.jetbrains.com
|
||||||
|
view.datalore.jetbrains.com
|
||||||
|
www.jetbrains.com
|
||||||
|
www.onboard.jetbrains.com
|
||||||
|
youtube.master-zdchint.mau.jetbrains.com
|
||||||
|
youtube.staging-zdchint.mau.jetbrains.com
|
||||||
|
zillow.fls.jetbrains.com
|
||||||
@@ -22,4 +22,5 @@ tiktokv.com
|
|||||||
us.tiktok.com
|
us.tiktok.com
|
||||||
verify-sg.tiktok.com
|
verify-sg.tiktok.com
|
||||||
v16-tiktokcdn-com.akamaized.net
|
v16-tiktokcdn-com.akamaized.net
|
||||||
v16-va.tiktokcdn.com
|
v16-va.tiktokcdn.com
|
||||||
|
mcs-va.tiktokv.com
|
||||||
|
|||||||
@@ -27,13 +27,16 @@ def parse_page(url):
|
|||||||
domain = columns[0].text.strip() # Извлечение столбца 'Domain'
|
domain = columns[0].text.strip() # Извлечение столбца 'Domain'
|
||||||
data.add(domain) # Добавляем в множество
|
data.add(domain) # Добавляем в множество
|
||||||
|
|
||||||
time.sleep(random.uniform(1, 3)) # Задержка между запросами
|
time.sleep(random.choice([2, 3, 4, 5])) # Случайная задержка между запросами
|
||||||
|
|
||||||
|
if attempt > 0:
|
||||||
|
print(f"Успешная загрузка {url} после {attempt}-й попытки.")
|
||||||
return data
|
return data
|
||||||
|
|
||||||
except requests.exceptions.HTTPError as e:
|
except requests.exceptions.HTTPError as e:
|
||||||
if response.status_code == 429:
|
if response.status_code == 429:
|
||||||
print(f"Ошибка загрузки {url}. Пробуем еще раз...")
|
print(f"Ошибка загрузки {url}. Пробуем еще раз... (Попытка {attempt + 1})")
|
||||||
time.sleep(3) # Фиксированная задержка перед повторной попыткой
|
time.sleep(5) # Фиксированная задержка перед повторной попыткой
|
||||||
else:
|
else:
|
||||||
raise e
|
raise e
|
||||||
|
|
||||||
@@ -47,52 +50,42 @@ def parse_all_pages(base_url):
|
|||||||
recent_pages_data = [] # Список для хранения данных последних страниц
|
recent_pages_data = [] # Список для хранения данных последних страниц
|
||||||
|
|
||||||
while keep_parsing:
|
while keep_parsing:
|
||||||
print(f"Парсим страницы с {page} по {page + 2}")
|
print(f"Парсим страницу {page}")
|
||||||
pages = [f"{base_url}?page={p}" for p in range(page, page + 3)]
|
url = f"{base_url}?page={page}"
|
||||||
|
|
||||||
try:
|
try:
|
||||||
with ThreadPoolExecutor(max_workers=3) as executor:
|
result = parse_page(url)
|
||||||
future_to_url = {executor.submit(parse_page, url): url for url in pages}
|
if result is None: # Если страница пуста или не существует
|
||||||
for future in as_completed(future_to_url):
|
print(f"Страница {page} не существует или пуста. Проверяем еще раз...")
|
||||||
url = future_to_url[future]
|
empty_page_attempts += 1
|
||||||
try:
|
time.sleep(5) # Ожидание перед повторной проверкой
|
||||||
result = future.result()
|
if empty_page_attempts >= 3:
|
||||||
if result is None: # Если страница пуста или не существует
|
print(f"Страница {page} пуста после 3 попыток. Остановка.")
|
||||||
print(f"Страница {url.split('=')[-1]} не существует или пуста. Проверяем еще раз...")
|
keep_parsing = False
|
||||||
empty_page_attempts += 1
|
break
|
||||||
time.sleep(3) # Ожидание перед повторной проверкой
|
else:
|
||||||
if empty_page_attempts >= 3:
|
continue # Переходим к следующей попытке
|
||||||
print(f"Страница {url.split('=')[-1]} пуста после 3 попыток. Остановка.")
|
|
||||||
keep_parsing = False
|
|
||||||
break
|
|
||||||
else:
|
|
||||||
continue # Переходим к следующей попытке
|
|
||||||
else:
|
|
||||||
empty_page_attempts = 0 # Обнуляем счётчик, если нашли данные
|
|
||||||
all_domains.update(result) # Добавляем новые домены в множество
|
|
||||||
print(f"Разбор {url} завершен.")
|
|
||||||
|
|
||||||
# Добавляем данные страницы в список для сравнения
|
|
||||||
recent_pages_data.append(result)
|
|
||||||
if len(recent_pages_data) > 3: # Храним данные только последних 3 страниц
|
|
||||||
recent_pages_data.pop(0)
|
|
||||||
|
|
||||||
# Проверяем, повторяются ли данные на последних трёх страницах
|
|
||||||
if len(recent_pages_data) == 3 and recent_pages_data[0] == recent_pages_data[1] == recent_pages_data[2]:
|
|
||||||
print(f"Данные на последних трёх страницах одинаковы. Остановка парсинга.")
|
|
||||||
keep_parsing = False
|
|
||||||
break
|
|
||||||
except Exception as e:
|
|
||||||
print(f"Ошибка парсинга {url}: {e}")
|
|
||||||
raise e
|
|
||||||
except requests.exceptions.HTTPError as e:
|
|
||||||
if '429' in str(e):
|
|
||||||
print("Ошибка 429. Пауза 4 секунды.")
|
|
||||||
time.sleep(3) # Пауза 3 секунды при ошибке 429
|
|
||||||
else:
|
else:
|
||||||
raise e # Пробрасываем другие ошибки, если они не 429
|
empty_page_attempts = 0 # Обнуляем счётчик, если нашли данные
|
||||||
|
all_domains.update(result) # Добавляем новые домены в множество
|
||||||
|
print(f"Разбор страницы {page} завершен.")
|
||||||
|
|
||||||
page += 3 # Переход к следующему набору страниц
|
# Добавляем данные страницы в список для сравнения
|
||||||
|
recent_pages_data.append(result)
|
||||||
|
if len(recent_pages_data) > 3: # Храним данные только последних 3 страниц
|
||||||
|
recent_pages_data.pop(0)
|
||||||
|
|
||||||
|
# Проверяем, повторяются ли данные на последних трёх страницах
|
||||||
|
if len(recent_pages_data) == 3 and recent_pages_data[0] == recent_pages_data[1] == recent_pages_data[2]:
|
||||||
|
print(f"Данные на последних трёх страницах одинаковы. Остановка парсинга.")
|
||||||
|
keep_parsing = False
|
||||||
|
break
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Ошибка парсинга страницы {page}: {e}")
|
||||||
|
raise e
|
||||||
|
|
||||||
|
page += 1 # Переход к следующей странице
|
||||||
|
|
||||||
return all_domains
|
return all_domains
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user