- 20.06.2022
- 23 845
- 218
- 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()
Последние темы в этом разделе:
- [Дмитрий Скоромнов] Основы системного администрирования (2024)
- [Анна Вичугова, Зоя Степчева] Проектирование сложных API: OpenAPI + AsyncAPI (2024)
- [Глеб Михайлов] [Stepik] SQL для анализа данных (2024)
- [Bogdan Stashchuk] [Udemy] Полный курс по MongoDB (2024)
- [Udemy] Полный учебный курс по Go. С Нуля до Героя (2019) [Engl]
- [Академия АйТи] Тестирование на проникновение и анализ безопасности. Базовый уровень (2024)
- [HTML Academy] Профессиональный онлайн-курс Vite (2024)
- [Дмитрий Чернов] Виртуализация Proxmox VE. Внедрение и эксплуатация. Расширенные возможности. Часть 2 (2024)
- [Udemy] [Рамзай Дупати] [ENG] Полный курс по сетевому взлому - от начинающего до продвинутого (2024)
- [infostart.ru] DevOps для 1С (2024)