james-proxy / james

Web Debugging Proxy Application
1.42k stars 125 forks source link

Solved: Run james without GUI and listen on all interface? #395

Closed mhtvsSFrpHdE closed 5 years ago

mhtvsSFrpHdE commented 5 years ago

I have planning run it under a very limited RAM environment, since it's electron, perhaps run with no GUI can reduce a lot RAM for my other purpose?

Windows x64 1803

Update: there is no option to run in no GUI mode,
but it will listen on all interface not just the localhost shows on startup page.
mhtvsSFrpHdE commented 5 years ago

And as a server, can it change listen from 127.0.0.1 to 0.0.0.0 or any LAN address?

mitchhentges commented 5 years ago

Hey, great question. Under-the-hood, James is using hoxy as the underlying proxy server, and you can make your own little application wrapping hoxy.

Alternatively, mitmproxy works out-of-the-box as a proxy CLI, and won't require you to do any custom development! Based on what you've mentioned so far, I think that mitmproxy will make more sense for you.

mhtvsSFrpHdE commented 5 years ago

@mitchhentges I've just come from mitmproxy...It doesn't have Windows native binary for current version. So since hide or don't use GUI is not a option, can James listen on 0.0.0.0 or specified interface?

mitchhentges commented 5 years ago

I didn't realize that mitmproxy didn't provide a native Windows binary, huh. TIL! We don't support a lot of proxy customization in James just yet. Also, due to your low-RAM needs, I would highly recommend spinning up a hoxy instance directly.

hoxy's docs are pretty top-notch too: (here's a nice snippet specifically about setting up a reverse proxy](http://greim.github.io/hoxy/#http-reverse). Let me know if that works for you :smile:

mhtvsSFrpHdE commented 5 years ago

Wow... that is too difficult for me to understand how the JavaScript work as native code instead of in a browser. These days I've just use C with class & C & Python & Bash script. I can read JavaScript yes but I didn't learn put it outside the browser at all... That will be a long journey.

I do have a 2GB low spec device for portable use, but I also have a 48GB PC out there. If James can listen on public network it will can be utilized by other device that couldn't provide enough RAM.

Connect a SSH local tunnel not always safe...Haha, though there's always a way.

mitchhentges commented 5 years ago

Ah, sorry, I assumed you were a Javascript developer, that's OK!

So since hide or don't use GUI is not a option, can James listen on 0.0.0.0 or specified interface?

I believe that James already listens to connections from external machines. Say, I just ran James locally (computer A), and from a separate machine (computer B), I had it proxy requests through computer A. Those requests showed up in James. So, I think the strategy of:

mhtvsSFrpHdE commented 5 years ago

Yes, it does response the request from LAN. The interface just shows "Proxy started on localhost:1338", and no a option to "modify settings", this make me think it only listened on localhost but it actually listen on all.