침투 테스트를 할 때는 수백 개의 웹 사이트가 포함된 비교적 큰 프로젝트가 있으므로 먼저 어떤 웹 사이트가 정상이고 어떤 웹 사이트가 비정상인지 판단해야 합니다. 그래서 앞으로 쉽게 사용할 수 있도록 작은 스크립트를 작성했습니다.
구체적인 구현 코드는 다음과 같습니다.
#!/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()+'打开成功'
테스트 결과는 다음과 같습니다.
발생한 문제:
처음 테스트를 시작했을 때, 만들 수 없거나 존재하지 않는 오류가 발생하면 직접 오류를 보고하고 프로그램을 중지했습니다. 나중에 여기에서 상태 코드를 가져올 때 response.status_code != 200이 잘못되었기 때문이라는 것을 알게 되었습니다.
일부 웹사이트를 열 수 없기 때문에 상태 코드가 반환되지 않습니다. 그래서 프로그램은 모른다! ==200으로 무엇을 할까요?
해결책:
예외를 포착하려면 try Except else를 사용하세요
구체적인 코드는 다음과 같습니다.
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
위 내용은 Python 스크립트를 사용하여 일괄 웹사이트 생존 감지를 구현하기 위해 편집자가 소개한 문제 및 해결 방법입니다. 궁금한 사항이 있으면 메시지를 남겨주시면 편집자가 답변해 드리겠습니다. 시간이 지나면. 또한 Script House 웹사이트를 지원해 주시는 모든 분들께 감사의 말씀을 전하고 싶습니다!