Heim > Artikel > Backend-Entwicklung > Probleme und Lösungen, die bei der Verwendung von Python-Skripten zur Implementierung der Batch-Überlebenserkennung von Websites aufgetreten sind
Bei Penetrationstests handelt es sich um ein relativ großes Projekt mit Hunderten von Websites. Daher müssen Sie zunächst feststellen, welche Websites normal und welche abnormal sind. Deshalb habe ich ein kleines Skript geschrieben, um es in Zukunft einfacher verwenden zu können.
Der spezifische Implementierungscode lautet wie folgt:
#!/usr/bin/python # -*- coding: UTF-8 -*- ''' @Author:joy_nick @博客:http://byd.dropsec.xyz/ ''' import requests import sys f = open('url.txt', 'r') url = f.readlines() length = len(url) url_result_success=[] url_result_failed=[] for i in range(0,length): try: response = requests.get(url[i].strip(), verify=False, allow_redirects=True, timeout=5) if response.status_code != 200: raise requests.RequestException(u"Status code error: {}".format(response.status_code)) except requests.RequestException as e: url_result_failed.append(url[i]) continue url_result_success.append(url[i]) f.close() result_len = len(url_result_success) for i in range(0,result_len): print '网址%s' % url_result_success[i].strip()+'打开成功'
Die Testergebnisse lauten wie folgt:
Aufgetretene Probleme:
Wenn ich zum ersten Mal mit dem Testen begann und ein Fehler auftrat, der nicht gemacht werden konnte oder nicht existierte, habe ich direkt einen Fehler gemeldet und das Programm gestoppt. Später fand ich heraus, dass es daran lag, dass „response.status_code != 200“ falsch war, als ich hier den Statuscode erhielt.
Da einige Websites nicht geöffnet werden können, wird der Statuscode nicht zurückgegeben. Das Programm weiß es also nicht! ==Was tun mit 200?
Lösung:
Verwenden Sie try außer else, um Ausnahmen abzufangen
Der spezifische Code lautet:
try: response = requests.get(url[i].strip(), verify=False, allow_redirects=True, timeout=5) if response.status_code != 200: raise requests.RequestException(u"Status code error: {}".format(response.status_code)) except requests.RequestException as e: url_result_failed.append(url[i]) continue
Das Obige ist das Problem und die Lösung, die der Herausgeber für die Implementierung der Batch-Website-Überlebenserkennung eingeführt hat. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht rechtzeitig. Ich möchte mich auch bei allen für Ihre Unterstützung der Script House-Website bedanken!