Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Crapify, a proxy for simulating slow, spotty HTTP connections (npmjs.com)
96 points by BenjaminCoe on Jan 3, 2015 | hide | past | favorite | 17 comments



Nice! There was a different tool in the same category, aptly named "Comcast", featured on HN a few weeks ago: https://github.com/tylertreat/Comcast


i thought u were being sarcastic but then you put the github's repo link there. LOL


At work we've been running into problems performing npm installs over a VPN. I'm suspicious that it relates to executing too many concurrent HTTP requests. This motivated me to create crapify, a tool which lets us experiment with throttling connection speed and concurrency.


On OS X you can achieve something similar using ipfw

For example,

sudo ipfw pipe 1 config bw 500KByte/s

Limits all network on your box to 500kb/s

sudo ipfw add 1 pipe 1 src-port 443

To direct all traffic through port 443 through your slow pipe

sudo ipfw delete 1

When you are all done delete


Don't the OSX devtools have a GUI for doing this? Can't remember what its called, I don't have XCode installed these days, but I remember it being pretty nifty.

EDIT: its called the Network Link Conditioner and apparently you install it from within xcode now.

EDIT2: I have just learned that ipfw is gone in yosemite? How distressing. Did they replace it with something?


I have Network Link Conditioner installed on my Yosemite Mac OS X box and it works fine (though it was installed prior to the Yose upgrade).

I learned about it here: http://nshipster.com/network-link-conditioner/


I think pfctl is the suggested replacement for ipfw, which was deprecated in Mavericks. I wrote the Comcast tool someone linked in this thread. Haven't had a chance to dive through the pfctl man pages to add support for Yosemite yet unfortunately.



I (and folks I work with) have had really great success using Charles Proxy for per-machine bandwidth throttling.

Also has some handy features like AJAX debugging.

http://www.charlesproxy.com/overview/about-charles/


Unfortunately ipfw has been removed in Yosemite. Fortunately, there is something similar built into Chrome dev tools now.


This is cool. If it could add random NATing between various VLANs and occasionally not open firewall ports as configured, it would be a simulation of my work environment!


For linux there is tool 'tc'


A more complete version of this: https://github.com/lightbody/browsermob-proxy

    * captures performance data in the HAR format.
    * blacklisting and whitelisting certain URL patterns
    * simulating various bandwidth and latency
    * remapping DNS lookups
    * flushing DNS caching
    * controlling DNS and request timeouts
    * automatic BASIC authorization
    * REST API


If you simply need to test a website on a simulated slow connection, then Chrome Devtools. For all other purposes, this looks great!


Why not use DummyNet, Clumsy or Network Link Conditioner (depending on your OS of choice)?

If you really need a HTTP proxy there are tools like Charles (although the low RTT to a proxy may change the nature of the testing)


My main use-case is programmatically throttling the outbound concurrent connections to a VPN. Writing a small proxy server in Node.js seemed like a reasonable approach for this.


Back in my network engineering days there were iptables rules to crapping up the packets. Was very useful for simulating dialup connections.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: