This commit is contained in:
Ground-Zerro
2024-10-15 13:40:29 +11:00
7 changed files with 1634 additions and 47 deletions

View File

@@ -2,6 +2,8 @@
<details>
<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)
- Возможность загрузки списков сервисов и DNS-серверов из локального файла. [Запрос @Noksa](https://github.com/Ground-Zerro/DomainMapper/issues/26)
- Вспомагательные [утилиты](https://github.com/Ground-Zerro/DomainMapper/tree/main/utilities) для поиска субдоменов.
@@ -40,6 +42,8 @@
- Search engines
- [Github сopilot](https://github.com/features/copilot)
- Twitch
- Discord
- Jetbrains
- Личный список
</details>

View File

@@ -25,6 +25,8 @@ localdns = yes
# Search engines - поисковые системы
# Github Copilot - ИИ помощник от github
# Twitch
# Discord
# Jetbrains
# custom - Custom DNS list, это файл "custom-dns-list.txt" расположенный в одном каталоге со скриптом
service =

View File

@@ -14,3 +14,5 @@ Torrent Truckers: https://raw.githubusercontent.com/Ground-Zerro/DomainMapper/ma
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
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

File diff suppressed because it is too large Load Diff

View 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

View File

@@ -23,3 +23,4 @@ us.tiktok.com
verify-sg.tiktok.com
v16-tiktokcdn-com.akamaized.net
v16-va.tiktokcdn.com
mcs-va.tiktokv.com

View File

@@ -27,13 +27,16 @@ def parse_page(url):
domain = columns[0].text.strip() # Извлечение столбца '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
except requests.exceptions.HTTPError as e:
if response.status_code == 429:
print(f"Ошибка загрузки {url}. Пробуем еще раз...")
time.sleep(3) # Фиксированная задержка перед повторной попыткой
print(f"Ошибка загрузки {url}. Пробуем еще раз... (Попытка {attempt + 1})")
time.sleep(5) # Фиксированная задержка перед повторной попыткой
else:
raise e
@@ -47,22 +50,17 @@ def parse_all_pages(base_url):
recent_pages_data = [] # Список для хранения данных последних страниц
while keep_parsing:
print(f"Парсим страницы с {page} по {page + 2}")
pages = [f"{base_url}?page={p}" for p in range(page, page + 3)]
print(f"Парсим страницу {page}")
url = f"{base_url}?page={page}"
try:
with ThreadPoolExecutor(max_workers=3) as executor:
future_to_url = {executor.submit(parse_page, url): url for url in pages}
for future in as_completed(future_to_url):
url = future_to_url[future]
try:
result = future.result()
result = parse_page(url)
if result is None: # Если страница пуста или не существует
print(f"Страница {url.split('=')[-1]} не существует или пуста. Проверяем еще раз...")
print(f"Страница {page} не существует или пуста. Проверяем еще раз...")
empty_page_attempts += 1
time.sleep(3) # Ожидание перед повторной проверкой
time.sleep(5) # Ожидание перед повторной проверкой
if empty_page_attempts >= 3:
print(f"Страница {url.split('=')[-1]} пуста после 3 попыток. Остановка.")
print(f"Страница {page} пуста после 3 попыток. Остановка.")
keep_parsing = False
break
else:
@@ -70,7 +68,7 @@ def parse_all_pages(base_url):
else:
empty_page_attempts = 0 # Обнуляем счётчик, если нашли данные
all_domains.update(result) # Добавляем новые домены в множество
print(f"Разбор {url} завершен.")
print(f"Разбор страницы {page} завершен.")
# Добавляем данные страницы в список для сравнения
recent_pages_data.append(result)
@@ -82,17 +80,12 @@ def parse_all_pages(base_url):
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:
raise e # Пробрасываем другие ошибки, если они не 429
page += 3 # Переход к следующему набору страниц
except Exception as e:
print(f"Ошибка парсинга страницы {page}: {e}")
raise e
page += 1 # Переход к следующей странице
return all_domains