在 Charles [mac] 中无法看到来自/到我的 NodeJS 应用程序的 http 流量

Posted

技术标签:

【中文标题】在 Charles [mac] 中无法看到来自/到我的 NodeJS 应用程序的 http 流量【英文标题】:Unable to see http traffic from/to my NodeJS app in Charles [mac] 【发布时间】:2016-01-20 18:46:24 【问题描述】:

我正在运行 Charles 来检查节点 js 客户端和在我的机器(Mac)上本地运行的服务之间的 HTTP 流量。我可以访问该服务,但在 Charles 中看不到任何痕迹。我尝试用我机器的 IP 名称替换 localhost 但仍然没有任何痕迹。如果我在 Chrome 中键入服务 URL,我确实会看到一个跟踪。有谁知道如何解决这个问题?

这是我的 nodejs 代码:

var thrift = require('thrift'); // I use Apache Thrift
var myService = require('./gen-nodejs/MyService'); // this is code generated by thrift compiler
var transport = thrift.TBufferedTransport();
var protocol = thrift.TBinaryProtocol();
var connection = thrift.createHttpConnection("localhost", 5331, 
  transport : transport,
  protocol : protocol,
  path: '/myhandler',
);

connection.on('error', function(err) 
    console.log(err);
);

// Create a client with the connection
var client = thrift.createHttpClient(myService, connection);
console.log('calling getTotalJobCount...');

client.getTotalJobCount(function(count)

    console.log('total job count = ' + count);
);

和我的代理设置:

【问题讨论】:

【参考方案1】:

在this 链接的帮助下自己解决了这个问题。 Charles 拦截了通过系统代理的流量,该代理在我的 mac 上是 127.0.0.1:8888。这是正确的代码:

// give path to the proxy in argument to createHttpConnection
var connection = thrift.createHttpConnection('127.0.0.1', 8888, 
  transport : transport,
  protocol : protocol,
  path: 'http://localhost:5331/myhandler', // give the actual URL you want to connect to here
);

另外需要用thrift.TBufferedTransport代替thrift.TBufferedTransport()thrift.TBinaryProtocol代替thrift.TBinaryProtocol()

【讨论】:

以上是关于在 Charles [mac] 中无法看到来自/到我的 NodeJS 应用程序的 http 流量的主要内容,如果未能解决你的问题,请参考以下文章

Mac上通过Charles给iPhone配置弱网环境

Charles Web 代理在 Mac OS 上读取但不写入会话

从 charles 代理记录中排除主机

MAC上使用Charles抓取WebSockets

mac上关闭charles后,电脑无法上网问题

Mac使用Charles抓包无法联网和乱码问题解决