Что не так с моим сканером url-адресов
я только что сделал скрипт python для сканирования URL-адресов на веб-сайте, и он продолжает зацикливаться и не печатает найденные URL-адреса, я работаю над инструментом тестирования пера, но мне просто нужно, чтобы это работало. пари-это какое-то действительно простое дело. если вы знаете, где я ошибся, пожалуйста, скажите мне. Заранее спасибо
import urllib import sqlite3 import re import sys links = [] colur_red = '\033[31m' colur_end = '\033[0m' color_green = '\033[32m' def findurl(text): if str(text).find("http") == 0: return True elif str(text).find("ftp") == 0: return True elif str(text).find("https") == 0: return True else: return False def openurl(url): try: html = urllib.urlopen(url).read() getlinks = re.findall(r"""<\s*a\s*href=["']([^=]+)["']""", html) for link in getlinks: a = findurl(link) if a == True: links.append(link) except: print(colur_red + "[-] Error Loading {}".format(str(url)) + colur_end) def main(site): print(color_green + "[+] Starting Scan on {}".format(site) + colur_end) openurl(site) for url in links: print url if len(url) == 0: print(colur_red + "[-] No URLs Found" + colur_end) elif sys.stdin.read(1) == 'q': print(color_green + "[+] Stopping Scan" + colur_end) else: print(color_green + "[+] Found URl and adding it to database" + colur_end) #hostname = str(url).replace(':/', '').split('/')[1] #db = sqlite3.connect('database.db') #cursor = db.cursor() #cursor.execute('''INSERT INTO data_1(urls, hostname)VALUES(?,?)''', (url, hostname)) #db.commit() #db.close() openurl(url) # i need to add away of exiting by pressing 'q' command = sys.argv length = len(command) num = 0 if len(command) == 1: print('please use -u <url>') else: for i in command: if i == "-u": num = num + 1 starturl = command[num] main(starturl) else: num = num + 1
Что я уже пробовал:
Я попытался сделать некоторую отладку, но только для того, чтобы попытаться понять, что не так. я знаю, что он прекрасно получает URL-адреса, и я думаю, что это связано с получением URL-адресов из ссылок.