내 목표는 firefox-plugin에서 TCP 연결을 식별하는 것입니다.JavaScript를 통한 TCP 연결에 대한 액세스
모든 연결에 대해 고유 한 ID를 설정해야합니다. 내 질문은 가능한 경우 누군가가 HTTP 요청에서 TCP 연결 개체에 액세스하는 방법을 알고 있습니까? 그런 다음 고유 한 ID를 설정할 수 있으며 모든 요청/응답 쌍은 연결에 고유하게 설정됩니다.
내 목표는 firefox-plugin에서 TCP 연결을 식별하는 것입니다.JavaScript를 통한 TCP 연결에 대한 액세스
모든 연결에 대해 고유 한 ID를 설정해야합니다. 내 질문은 가능한 경우 누군가가 HTTP 요청에서 TCP 연결 개체에 액세스하는 방법을 알고 있습니까? 그런 다음 고유 한 ID를 설정할 수 있으며 모든 요청/응답 쌍은 연결에 고유하게 설정됩니다.
질문에 대한 직접적인 답변을 모르겠지만 source code for Firebug을 살펴 보길 권장합니다. 적어도 네트워크 스택의 HTTP 요청 수준에 액세스 할 수있는 것 같습니다.
호프 행운을 빕니다!
감사하지만 Firebug는 요청/응답 쌍 (모든 헤더)에 대한 정보 만 표시하지만 실행되는 연결에 대한 정보는 표시하지 않습니다. –
당신이 클라이언트 측 자바 스크립트에 대해 이야기한다고 가정하면이 기능을 달성하는 데 도움이되는 몇 가지 프로젝트가 있습니다.
는 도움이되기를 바랍니다.
MDN에서는 : HTTP 활동을 모니터링하는 방법
여기에 내가 내 자신의 FF 애드온 매우 비슷한 일을 자신의 샘플 코드
// Define a reference to the interface
var nsIHttpActivityObserver = Components.interfaces.nsIHttpActivityObserver;
var httpObserver =
{
observeActivity: function(aHttpChannel, aActivityType, aActivitySubtype, aTimestamp, aExtraSizeData, aExtraStringData)
{
if (aActivityType == nsIHttpActivityObserver.ACTIVITY_TYPE_HTTP_TRANSACTION) {
switch(aActivitySubtype) {
case nsIHttpActivityObserver.ACTIVITY_SUBTYPE_RESPONSE_HEADER:
// received response header
break;
case nsIHttpActivityObserver.ACTIVITY_SUBTYPE_RESPONSE_COMPLETE:
// received complete HTTP response
break;
}
}
}
};
var activityDistributor =
Components.classes["@mozilla.org/network/http-activity-distributor;1"]
.getService(Components.interfaces.nsIHttpActivityDistributor);
activityDistributor.addObserver(httpObserver);
나는 Firefox-Extension HttpFox를 사용하고 있는데이 코드는 이미 가지고있다.
하지만 누락 된 부분은 tcp 연결에 대한 정보입니다.
"keep-alive"및 "connection"헤더는 볼 수 있지만 연결 자체에는 매핑이 없습니다. –
입니다 . 연결과 관련된 nsiHttpChannel
에 대한 참조를 원한다고 가정합니다. 그러나, 네이티브 코드에 의해 뒷받침 된 이후로 속성을 추가하고 유지할 수 있는지 확신 할 수 없습니다. 어느 것이 든 확실하지 않습니다. 하지만 너 수 있습니다 다른 곳에 nsiHttpChannel
저장하고 그런 식으로 ID를 유지.
다음은 문제를 해결하는 addon에서 http 트래픽을 모니터링하는 데 사용하는 간단한 코드입니다.
var Cc = Components.classes;
var Ci = Components.interfaces;
var MyHttpObserver = {
// must be exposed so that the ObserverService can register itself
observe: function(subject, topic, data) {
subject.QueryInterface(Ci.nsIHttpChannel);
if(topic === "http-on-modify-request"){
// store 'subject' somewhere
} else if(topic === "http-on-examine-response"){
// look up 'subject' it will be the same reference as before
}
},
register: function() {
var observerService = Cc["@mozilla.org/observer-service;1"].getService(Ci.nsIObserverService);
observerService.addObserver(this, "http-on-modify-request", false);
observerService.addObserver(this, "http-on-examine-response", false);
},
unregister: function() {
var observerService = Cc["@mozilla.org/observer-service;1"].getService(Ci.nsIObserverService);
observerService.removeObserver(this, "http-on-modify-request");
observerService.removeObserver(this, "http-on-examine-response");
},
QueryInterface: function (aIID) {
if (aIID.equals(Ci.nsIObserver) || aIID.equals(Ci.nsISupports)){
return this;
}
throw Components.results.NS_NOINTERFACE;
}
};
좋아 보이지만이 응답은 http-request/response로 제한되어 있으며 tcp 연결에 대한 정보는 제공하지 않습니다. 어쨌든 고마워! –
나는이 질문을 이해하지 못한다고 생각한다. 아마도 그것을 바꿀 수 있을까? 어떤 종류의 정보가 필요합니까? 내가 아는 "tcp 연결"에 가장 가까운 것은 [nsiHttpChannel] (https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsIHttpChannel)입니다. – skabbes
방화범이 보였습니까? 오픈 소스입니다. https://developer.mozilla.org/en/Firebug_internals –
좋은 질문입니다. upvote 있습니다. –
tcp 연결 개체에서 필요한 정보 유형을 포함하도록이 말을 다시 쓸 수 있습니까? 아니면 더 나은 아직 최종 목표를 설명하십시오. – skabbes