패키지를 통해 점프 URL을 가져오고 dnspython 모듈을 통해 모니터링 서비스가 정상인지 조회합니다

최근에 인터넷에서 DNS 퀴즈를 통해 같은 DNS에서 여러 개의 IP가 서비스 페이지에 대응하는 모니터링을 하는 스크립트를 보았는데 자신이 시험하는 과정에서 일부 사이트를 방문하면 conn.getresponse()가 비어 있는 것을 발견했고 conn.getresponse()를 통해conn.getresponse()를 통과했다.status、conn.getresponse().리슨은 303 SEE OTHER로 이 경우 서비스가 정상적인지 판단할 수 없기 때문에 wireshark 패키지를 통해 200OK 위에 있는 패키지를 되돌려 주고 패키지를 분석해 헤더스에 추가해 방문한다.구체적인 절차는 다음과 같다.
1、wireshark를 켜고 카드를 켜고 브라우저에서 웹 방문을 하며 쓸모없는 가방을 필터합니다
http and ip.addr==  and tcp.port == 80

2. 해당하는 가방을 우클릭하고Follow TCP stream을 선택하면 다음과 같은 과정을 얻을 수 있습니다.
....................GET / HTTP/1.1

Host:  DNS

Connection: keep-alive

Cache-Control: max-age=0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

Upgrade-Insecure-Requests: 1

User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36

Accept-Encoding: gzip, deflate, sdch

Accept-Language: zh-CN,zh;q=0.8,en;q=0.6

Cookie:  cookie



HTTP/1.1 200 OK

Date: Fri, 25 Mar 2016 03:27:55 GMT

 ......

3. 다음 코드로 접근 테스트를 진행한다.
def checkip(ip):
    url=ip+":80"    # ip 
    getcontent=""
    httplib.socket.setdefaulttimeout(5)
    conn = httplib.HTTPConnection(url)

    try:
        conn.request("GET","/",headers={"Host":" DNS","Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/w
ebp,*/*;q=0.8","Connection":"keep-alive","Cookie":" cookie"})
        r = conn.getresponse()
        getcontent = r.read(15)
        print getcontent

    finally:
        if getcontent=="<!DOCTYPE html>": # 
            print ip+" [OK]"
        else:
            print ip+" [ERROR]"

출력을 마지막으로 실행한 결과는 다음과 같습니다.
 ip [OK]

좋은 웹페이지 즐겨찾기