- 20.06.2022
- 26 932
- 230
- 36
- Награды
- 10
- Пол
- Муж.
Репутация:
- Автор темы
- Администратор
- Модератор
- Команда форума
- #1
Суть
Для начала устанавливаем библиотеки для парсинга и самого чека (также beauty улучшение):
Код:
pip install bs4 requests tqdm
Отлично, теперь нам надо узнать, как чекать. Я сделал так. Открыл Fragment.

Ввел свой юзернейм и меня перебросило на .

а если перейти по кнопке юзернейма, то откроется .

Я подумал, что если поставить желаемый юзер в , то нас перенесет на страницу покупки.
Возьмем юзернейм, который никто бы не выбрал. Например @csdjkhhbchsbdjch. Таким образом, наша ссылка будет выглядеть так: . Она перенесет нас на .
О чем это говорит? Только что, мы с вами поняли, что если юзернейм свободный, то нас переносит на .
Приступаем к написанию кода.
Импортируем нужные библиотеки:
Код:
pip install bs4 requests tqdm
from bs4 import BeautifulSoup # сам парс
import requests # запросы
from tqdm import tqdm # для бара
from concurrent.futures import ThreadPoolExecutor, Executor # многопоточность
import time # для времени
Теперь напишем сам класс чекера:
Код:
class UserName():
def __init__(self, lines: list, threads: int) -> None:
self.lines = lines # строчки
self.threads = threads # колво потоков
self.result = [] # результаты
def run(self): # запуск
total_lines = len(self.lines) # колво строк
with ThreadPoolExecutor(max_workers=self.threads) as executor: # модуль для потоков
list(tqdm(executor.map(self.parse, self.lines), total=total_lines, ascii=True, desc=" Check ")) # сам чек с визуализацией
def parse(self, name): # сам парсинг
name = name.strip() # удаляем лишние пробелы
self.r = requests.get(f"https://fragment.com/username/{name}") # кидаем запрос на url
if self.r.url == f"https://fragment.com/?query={name}": # про то что я вам говорил
self.result.append(f" Username @{name} | Free\n")
return # просто пустой возврат чтобы код не продолжал работу
else: # если у нас не идет переброс на другой юрл
try:
bs = BeautifulSoup(self.r.text, "lxml") # парсим сайт
res = bs.find("span", "tm-section-header-status").text # ищем текст внутри маленького окошка
if res.lower() in ["sold", "available", "taken"]: # проверяем текст
self.result.append(f" Username @{name} | {res}\n") # добавляем результат
return
except:
self.result.append(f" Username @{name} | Unknown error\n") # просто обработка ошибок
Все расписано в комментах к коду

А теперь переходим к самому интерфейсу и запуску:
Код:
def main():
start_time = time.time() # для подсчета времени
_lines = input(" Загрузи файл со строками: ")
_lines2 = input(" Загрузи файл со строками для результата: ")
threads = input(" Введи кол-во потоков: ")
lines = open(_lines, "r").readlines()
checker = UserName(lines, int(threads))
checker.run() # запуск чекера
open(_lines2, "w").writelines(checker.result) # запись результата в файл
print(f" Lead time: {time.time() - start_time}")
main()
Последние темы в этом разделе:
- [Николай Мищенков] [Stepik] Работа с SSH клиентом PuTTY (2025)
- [Udemy] СУБД MySQL и язык запросов SQL. Теория и практика (2024)
- [Елена Кантонистова, Евгений Паточенко, Марк Блуменау] [Stepik] Практический Deep Learning (2025)
- [Д. Тучс, М. Рубанов] Продвинутый курс по автоматизации тестирования Java Advanced 2.0 (2024)
- [Антон Ларичев] [purpleschool] Bash скрипты (2025)
- Angular и Golang: Быстрое руководство - Продвинутый уровень (2021)
- [Сергей Бобровский] [Высшая школа программирования] База программной инженерии (2025)
- [Андрей Пфау]Старт в профессии TON-разработчик. Тариф Асинхрон (2025)
- [Дмитрий Фокеев] [Stepik] Полный курс по React JS (Redux / Router / Tailwind CSS) (2025)
- [Stepik] Jetpack Compose с нуля (2024)