2012-08-17 2 views
3

특정 웹 사이트가 응답 할 때 응답하는 데 걸리는 시간을 모니터링해야합니다. 트래픽이 대상 사이트와 교환 될 때만 포트 80에서 트래픽을 감지하고 싶습니다. 나는 SO를 찾았고 pcapy 또는 scapy가 그 일에 적합한 도구 인 것처럼 보이지만 그들은 내가 필요로하는 것보다 더 깊게 보입니다.pcapy 또는 scapy를 사용하여 자체 생성 (HTTP) 네트워크 트래픽 모니터링

Network traffic monitor with pcapy in python

을하고 난 대상 사이트 향하는하는

def __handle_packet(self, header, data): 
    # method is called for each packet by dispatch call (pcapy) 
    self._dispatch_bytes_sum += header.getlen() #header.getlen() #len(data) 
    logger.debug("header: (len:{0}, caplen:{1}, ts:{2}), d:{3}".format(header.getlen(), header.getcaplen(), header.getts(), len(data))) 
    #self.dumper.dump(header, data) 

어떻게 든에만 처리 ​​/ 압축을 풀 패킷을 변경할 필요가 있다고 생각 : 나는 다음과 같은 스크립트를 공부했다. 이것은 LAN상의 Windows XP 시스템을위한 것이므로 브라우저가 트래픽을 시작하는 것이 중요합니다.

감사합니다.

+0

[Bro] (http://stackoverflow.com/a/11081321/1170277)이 시나리오에 사용할 적절한 도구가됩니다. 그러나 Windows에서는 작동하지 않습니다. – mavam

+0

내 질문에 대한 답변은 http://pypi.python.org/packages/source/N/NetCube/NetCube-0.3.0.zip입니다. network.py 파일을 살펴 봐야합니다. – reckoner

답변

3

scapy의 문제는 재 조립을 처리하지 않는다는 것입니다. TCP streams. 찾고있는 HTTP가 TCP 스트림에 임베드 될 가능성이 있습니다. 문서 인용하기 :

Scapy는 자극/반응 모델을 기반으로합니다. 이 모델은 TCP 스택에서 제대로 작동하지 않습니다. 반면에, TCP 스트림은 자극/반응 기반의 메시지를 교환하는 관으로 ​​사용되는 경우가 매우 흔합니다.

마찬가지로 scapy는 하위 계층의 것들에 더 이상적입니다. 예를 들어 DHCP 요청에서 IP 패킷을 추적 할 수 있습니다. 많은 네트워크 도구와 마찬가지로 TCP의 복잡성과 스트림 기반 특성은 모든 계층을 재구성하고 모든 재전송을 처리하고 가장자리 사례를 처리하지 않고 일관되게 데이터를 추출하는 것이 어려워지는 계층을 교차하면된다는 것을 의미합니다.

curl 또는 urllib과 같은 것을 사용하고 응답이 다시 오는 데 걸리는 시간을 확인할 수 있습니까?

+0

예, 현재 브라우저에서 트래픽을 생성하므로 셀렌을 사용하고 있습니다. 나는 브라우저가 생성하는 트래픽을 수동적으로 스니핑하는 것이 가능할 것이라고 기대했는데, 그 이유는 상응하는 셀레늄 세션을 구성하는 것이 항상 가능하지는 않을 것이기 때문이다. 그러나 당신이 말하는 것에서 그것은 상당히 어려울 것으로 보인다. – reckoner

+0

@reckoner 예 스니핑 TCP는 중요하지 않습니다. 그것의 stateful. 연결을 설정하고 여러 요청에 대해 열어 둘 수도 있고, 각 HTTP 요청마다 새 연결을 설정할 수도 있습니다. 물론 TCP가 항상 신뢰할 수 있고 특정한 경우에만 작동하는 특정 방식으로 작동한다는 가정을하는 코드를 작성할 수 있습니다. –

+0

@reckoner scapy 또한 파이썬 2.6에서 실행될 때 마지막으로 사용하려고했습니다. –