>  기사  >  백엔드 개발  >  일괄 웹 사이트 생존 감지를 구현하기 위해 Python 스크립트를 사용하는 데 발생하는 문제 및 솔루션

일괄 웹 사이트 생존 감지를 구현하기 위해 Python 스크립트를 사용하는 데 발생하는 문제 및 솔루션

WBOY
WBOY원래의
2016-12-05 13:27:161674검색

침투 테스트를 할 때는 수백 개의 웹 사이트가 포함된 비교적 큰 프로젝트가 있으므로 먼저 어떤 웹 사이트가 정상이고 어떤 웹 사이트가 비정상인지 판단해야 합니다. 그래서 앞으로 쉽게 사용할 수 있도록 작은 스크립트를 작성했습니다.

구체적인 구현 코드는 다음과 같습니다.

#!/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 웹사이트를 지원해 주시는 모든 분들께 감사의 말씀을 전하고 싶습니다!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.