Javascript: Ignorar XMLHttpRequest.open ()

¿Cómo podría anular el método XMLHttpRequest.open() y luego capturar y modificar sus arguments?

Ya probé el método proxy, pero no funcionó, aunque quité el over-od abierto cuando se llamó XMLHttpRequest() :

 (function() { var proxied = window.XMLHttpRequest.open; window.XMLHttpRequest.open = function() { $('.log').html(arguments[0]); return proxied.apply(this, arguments); }; })(); 

No está modificando el método open henetworkingado por los XMLHttpRequest objects solo agrega un método al XMLHttpRequest constructor que en realidad nunca se usa.

Intenté este código en Facebook y pude ver las requestes:

 (function() { var proxied = window.XMLHttpRequest.prototype.open; window.XMLHttpRequest.prototype.open = function() { console.log( arguments ); return proxied.apply(this, [].slice.call(arguments)); }; })(); /* ["POST", "/ajax/chat/buddy_list.php?__a=1", true] ["POST", "/ajax/apps/usage_update.php?__a=1", true] ["POST", "/ajax/chat/buddy_list.php?__a=1", true] ["POST", "/ajax/canvas_ticker.php?__a=1", true] ["POST", "/ajax/canvas_ticker.php?__a=1", true] ["POST", "/ajax/chat/buddy_list.php?__a=1", true] */ 

Así que sí, el método abierto debe agregarse al XMLHttpRequest prototype (window.XMLHttpRequest.prototype) no al XMLHttpRequest constructor (window.XMLHttpRequest)

Daría un vistazo al proyecto xmlhttprequest en google code. Es un buen ejemplo de anular correctamente el object XMLHttpRequest. La fuente se puede ver aquí .

Use XMLHttpRequest.prototype.open en su lugar.