• XSS.stack #1 – первый литературный журнал от юзеров форума

Парсер на питоне

users_h8

HDD-drive
Пользователь
Регистрация
19.08.2024
Сообщения
45
Реакции
21
Приветствую! Пишу парсер на Python и никак не могу довести его до конца. Пробовал разные библиотеки, но постоянно сталкиваюсь с проблемой: Google возвращает обфусцированный HTML, из которого парсер не может извлечь ссылки на сайты.
Парсер создаю для сбора сайтов по доркам, так как хочу найти первые цели для пентеста. Однако на данный момент я достаточно посредственный кодер. Хотел бы узнать у более опытных коллег, как можно решить подобную проблему. Также пробовал обойти капчу, но это сработало лишь частично. Нормальных решений в сети не нашел.

Использовал следующие библиотеки для Python:
  • Selenium
  • Requests
  • Beautiful Soup (bs4)
 
Попробуй деобфусцировать) А так хотелось бы поближе познакомится с материалом и увидеть проблему глазами
Собственно, проблема в том, что если я буду всё деобфусцировать вручную, то весь смысл парсера теряется. Он ищет ссылки по дорк-запросу в тегах HTML-кода страницы. Однако я не знаю, как настроить его так, чтобы он автоматически проводил деобфускацию и вытягивал ссылки, если это вообще возможно.

Я могу скинуть сюда сам код, чтобы вы могли посмотреть его своими глазами.
 
да, поделитесь кодом
Немного задержался с ответом, но вот мой код.

Python:
import requests
import argparse
from bs4 import BeautifulSoup

def fetch_google_dork(dork):
    try:
        print(f"Searching: {dork}")
        url = f"https://www.google.com/search?q={dork}"
        headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"
        }
        response = requests.get(url, headers=headers)
        response.raise_for_status()
        print("Success.")
        return response.text
    except requests.exceptions.HTTPError as http_err:
        print(f"HTTP error: {http_err}")
    except Exception as err:
        print(f"Error: {err}")

def parse_links(html):
    soup = BeautifulSoup(html, 'html.parser')
    links = []
    for item in soup.find_all('h3'):
        parent = item.find_parent('a')
        if parent and 'href' in parent.attrs:
            link = parent['href']
            links.append(link)
    return links

def main():
    parser = argparse.ArgumentParser(description='Parsing Google Dork')
    parser.add_argument('--wordlist', type=str, required=True, help='Input file name)
    parser.add_argument('--output', type=str, required=True, help='Output file name')
    args = parser.parse_args()

    try:
        with open(args.wordlist, 'r') as file:
            dorks = file.readlines()
            print(f"Found {len(dorks)} Google Dorks in file")a
            all_links = []
            for dork in dorks:
                dork = dork.strip()
                if dork:
                    html_code = fetch_google_dork(dork)
                    if html_code:
                        # Выводим HTML-код страницы
                        print(f"HTML code '{dork}':\n{html_code[:2000]}...\n") # Дебаг для проверки  HTML кода страницы
                        links = parse_links(html_code)
                        all_links.extend(links)
                        print(f"Found {len(links)} links {dork}.")

            
            with open(args.output, 'w') as output_file:
                for link in all_links:
                    output_file.write(link + '\n')
            print(f"Output saved in {args.output}")

    except FileNotFoundError:
        print(f"File {args.wordlist} not found.")
    except Exception as e:
        print(f"Error: {e}")

if __name__ == "__main__":
    main()
 
Ты можешь подробнее описать проблему? Желательно со скринами. Можно попробовать fake-useragent использовать.
Python:
from fake_useragent import UserAgent
ua = UserAgent()
headers = {
"User-Agent": ua.random
    }
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх