• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Простой скрипт для парсинга SimilarWeb

Gilgalad

One Level
17.08.2023
4
6
BIT
0
Написал небольшой скрипт который парсит похожие сайты с SimilarWeb:
Запускаем скрипт, пишем домен, с которого хотим собрать похожие сайты

Скрипт запускает браузер, открывает симиларвеб и парсит домены:

Далее скрипт каждый спаршенный домен автоматически подставляет в симиларвеб и парсит похожие по нему. То есть парсинг длится бесконечно, но рано или поздно изначальная тематика уйдёт, поэтому рекомендую следить время от времени за процессом парсинга. Спаршенные домены сохраняются в текстовый файл results.txt, который создается в папке (папка так же создается при каждом запуске скрипта).
Для работы скрипт использует драйвер chrome, то есть на вашем компьютере должен быть установлен какой-нибудь браузеров на хром-движке. Это всё сделано для того чтобы имитировать действия реального человека и обходить защиту от парсинга.
Сам скрипт:
Python:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from bs4 import BeautifulSoup
import os
from datetime import datetime
import time

def create_output_folder():
    folder_name = datetime.now().strftime("%Y_%m_%d-%H_%M_%S")
    os.makedirs(folder_name, exist_ok=True)
    return folder_name

def write_to_file(folder, filename, data):
    with open(os.path.join(folder, filename), 'a') as f:
        f.write(data + "\n")

def process_domain(domain, chrome_options):
    driver = webdriver.Chrome(options=chrome_options)
    driver.set_page_load_timeout(30)

    try:
        driver.get(f'https://www.similarweb.com/website/{domain}/')
        time.sleep(10)

        soup = BeautifulSoup(driver.page_source, 'html.parser')

        div = soup.find('div', {'class': 'wa-competitors__list'})
        domains = []
        if div is not None:
            for span in div.findAll('span', {'class': 'wa-competitors__list-item-title'}):
                domains.append(span.text.strip())

        print(f"Данные домена {domain} успешно обработаны.")
        return domains
    except Exception as e:
        print(f"Ошибка обработки домена {domain}: {e}")
    finally:
        driver.quit()
    return []

def main():
    output_folder = create_output_folder()

    chrome_options = Options()

    processed_domains = set()
    
    initial_domain = input("Введите домен для обработки: ")
    domains_to_process = [initial_domain]

    while domains_to_process:
        domain = domains_to_process.pop()
        if domain not in processed_domains:
            processed_domains.add(domain)
            for new_domain in process_domain(domain, chrome_options):
                write_to_file(output_folder, "results.txt", new_domain)
                domains_to_process.append(new_domain)

    print("Все данные были успешно сохранены.")

if __name__ == "__main__":
    main()
Если кому-то как-то надо дополнить - пишите. Так же могу написать простенькие скрипты, не только для парсинга. Обращайтесь.
 

Logas

Grey Team
23.04.2023
199
94
BIT
480
Приветствую! Хорошая идея у тебя, могу предложить дополнения:
1) Добавить опцию --proxy=ip:port --proxy-cred=login:pass
Если прокси без кредов, то достаточно просто --proxy=ip:port
2) Добавить опцию прокси по ссылке, нп вход подается линк с прокси листом
eg:
3) Возможность выбрать какую информацию о доменах сохранять или empty(просто домен, как ты и сделал). К присеру
facebook.com | 17.4B
 

Gilgalad

One Level
17.08.2023
4
6
BIT
0
Приветствую! Хорошая идея у тебя, могу предложить дополнения:
1) Добавить опцию --proxy=ip:port --proxy-cred=login:pass
Если прокси без кредов, то достаточно просто --proxy=ip:port
2) Добавить опцию прокси по ссылке, нп вход подается линк с прокси листом
eg:
3) Возможность выбрать какую информацию о доменах сохранять или empty(просто домен, как ты и сделал). К присеру
facebook.com | 17.4B
на неделе добавлю функции с прокси и доп инфу
 
  • Нравится
Реакции: Logas

code00

New member
02.11.2023
1
0
BIT
0
давай уже полноценный сканер дорок, вписываем пачку вида
index2.php?showpage=
index2.php?strona=
index2.php?sub2=
index2.php?sub=

а он с гугла собирает линки.
 

Logas

Grey Team
23.04.2023
199
94
BIT
480
давай уже полноценный сканер дорок, вписываем пачку вида
index2.php?showpage=
index2.php?strona=
index2.php?sub2=
index2.php?sub=

а он с гугла собирает линки.
Проще ко мне обратиться, я тебе напаршу. С открытым кодом ничего нормального на эту тему не будет, та и прокси нужны хорошие.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!