anyproxy/en/index.html
2015-08-22 14:57:07 +08:00

243 lines
10 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<html>
<head>
<title>AnyProxy</title>
<link rel="stylesheet" type="text/css" href="/dest/index.css">
<link rel="shortcut icon" type="image/png" href="/favico.png?t=2" />
<meta name="description" content="A fully configurable proxy in NodeJS, which can handle HTTPS requests perfectly.">
<meta name="description" content="AnyProxy - 开放式的HTTP/HTTPS代理你可以灵活控制各种网络数据">
<meta name="keywords" content="代理服务器 Proxy HTTP HTTPS">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<script>
//redirect to Chinese version if in China
if(new Date().getTimezoneOffset() == "-480" && !(/(cn|en)/i.test(location.href))){
location.href = "/cn";
}else{
var _hmt = _hmt || []; (function() {var hm = document.createElement("script"); hm.src = "//hm.baidu.com/hm.js?4e51565b7d471fd6623c163a8fd79e07"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();
}
</script>
</head>
<body>
<div class="wrapper">
<div class="cornerBtnWrapper">
<a href="/cn">中文</a>|
<a href="/en">English</a>|
<a href="https://github.com/alibaba/anyproxy" target="_blank">View on Github</a>
</div>
<div class="brief">
<div class="logo">
<img src="http://gtms04.alicdn.com/tps/i4/TB1XfxDHpXXXXXpapXX20ySQVXX-512-512.png" width="250" height="250" alt="anyproxy logo" />
</div>
<h2 class="slogan">AnyProxy is a fully configurable http/https proxy in NodeJS, which offers you the ablity to handle http traffic as you wish.</h2>
<div class="action">
<iframe src="https://ghbtns.com/github-btn.html?user=alibaba&repo=anyproxy&type=star&count=true" frameborder="0" scrolling="0" width="100px" height="20px"></iframe>&nbsp;&nbsp;&nbsp;
<iframe src="https://ghbtns.com/github-btn.html?user=alibaba&repo=anyproxy&type=fork&count=true" frameborder="0" scrolling="0" width="100px" height="20px"></iframe>
</div>
</div>
<div class="feature">
<div class="featureContent">
<div class="item">
<span class="iconWrapper">
<i class="iconfont">&#xe602;</i>
</span>
<h4>Based on Node.js</h4>
<h5>It's all javascript and easy to learn.</h5>
</div>
<div class="item">
<span class="iconWrapper">
<i class="iconfont">&#xe601;</i>
</span>
<h4>HTTPS supported</h4>
<h5>help to decrypted HTTPS data<a href="https://github.com/alibaba/anyproxy/wiki/HTTPS%E7%9B%B8%E5%85%B3%E6%95%99%E7%A8%8B" target="_blank"><br>How to config&nbsp;&gt;&gt;</a></h5>
</div>
<div class="item">
<span class="iconWrapper">
<i class="iconfont bigger">&#xe600;</i>
</span>
<h4>Web UI</h4>
<h5>Web based interface to view requests</h5>
</div>
<div class="item">
<span class="iconWrapper">
<i class="iconfont">&#xe604;</i>
</span>
<h4>Customed Rule File</h4>
<h5>Make your own debugging tool by writing rule files</h5>
</div>
<div style="clear:both"></div>
</div>
</div>
<div class="quickstart listSection">
<div class="quickstartContent listContent">
<h4 class="subtitle" id="install">Installation</h4>
<ul>
<li>install <a href="http://nodejs.org/" target="_blank">Node.js</a> &gt;= v0.12</li>
<li><code class="simpleBash">npm install -g anyproxy</code>, may require<code class="simpleBash">sudo</code></li>
<li><a href="https://github.com/alibaba/anyproxy#quick-start" target="_blank">More&gt;&gt;</a></li>
</ul>
<h4 class="subtitle" id="quickstart">Quick Start</h4>
<ul>
<li>run&nbsp;&nbsp;<code class="simpleBash">anyproxy</code></li>
<li>set proxy to 127.0.0.1:8001 on your browser or device</li>
<li>view web interface at http://127.0.0.1:8002</li>
<li><a href="https://github.com/alibaba/anyproxy#quick-start" target="_blank">More Usage&nbsp;&gt;&gt;</a></li>
</ul>
<a href="https://github.com/alibaba/anyproxy#step-4---launch-web-interface" target="_blank"><img class="screenshot" src="http://gtms01.alicdn.com/tps/i1/TB1IdgqGXXXXXa9apXXLExM2pXX-854-480.gif" width="350"/></a>
</div>
</div>
<div class="sample">
<div class="sampleContent">
<h4 class="subtitle" id="sample ">Sample of Rule Files</h4>
<div class="item">
<h5 class="itemTitle">Append &quot;hello world&quot; on HTML response</h5>
<pre>
<code class="javascript">
//append "hello world" to all web pages
//file : rule_replace_response_data.js
//run : anyproxy --rule rule_replace_response_data.js
module.exports = {
replaceServerResDataAsync: function(req,res,serverRes,cb){
if(/html/i.test(res.headers['content-type'])){
var newDataStr = serverRes.toString();
newDataStr += "hello world!";
cb(newDataStr);
}
}
};
</code>
</pre>
<span class="figure">
<img src="https://t.alipayobjects.com/images/rmsweb/T1LcphXf0eXXXXXXXX.png" width="350"/>
</span>
<hr />
</div>
<div class="item">
<h5 class="itemTitle">remove if-modified-since from http request header</h5>
<pre>
<code class="javascript">
//remove cache related header
//file : rule_remove_cache_header.js
//run : anyproxy --rule rule_remove_cache_header.js
module.exports = {
replaceRequestOption : function(req,option){
var newOption = option;
delete newOption.headers['if-modified-since'];
return newOption;
}
};
</code>
</pre>
<span class="figure">
<img src="https://t.alipayobjects.com/images/rmsweb/T1ecFhXjxcXXXXXXXX.png" width="350"/>
</span>
<hr />
</div>
<div class="item">
<h5 class="itemTitle">assign a specified ip address for some requests</h5>
<pre>
<code class="javascript">
//assign a specific IP adress for some request
//file : rule_reverse_proxy.js
//run : anyproxy --rule anyproxy --rule rule_reverse_proxy.js
module.exports = {
replaceRequestOption : function(req,option){
var newOption = option;
if(newOption.headers.host == "www.taobao.com"){
newOption.hostname = "192.168.1.3";
newOption.port = "80";
}
return newOption;
}
};
</code>
</pre>
<span class="figure">
<img src="https://t.alipayobjects.com/images/rmsweb/T1hsxhXeddXXXXXXXX.png" width="350"/>
</span>
<hr />
</div>
<div class="item">
<h5 class="itemTitle">replace all image response by local one</h5>
<pre>
<code class="javascript">
//replace all the images with local one
//file : rule_use_local_data.js
//run : anyproxy --rule anyproxy --rule rule_use_local_data.js
var fs = require("fs"),
img = fs.readFileSync("sample.jpg");
module.exports = {
shouldUseLocalResponse : function(req,reqBody){
if(/\.(png|gif|jpg|jpeg)$/.test(req.url)){
req.replaceLocalFile = true;
return true;
}else{
return false;
}
},
dealLocalResponse : function(req,reqBody,callback){
if(req.replaceLocalFile){
callback(200, {"content-type":"image/png"},img );
}
}
};
</code>
</pre>
<span class="figure">
<img src="https://t.alipayobjects.com/images/rmsweb/T1Zr4hXeXhXXXXXXXX.png" width="350"/>
</span>
</div>
<div class="readmoreBtn">
<a href="https://github.com/alibaba/anyproxy/wiki/What-is-rule-file-and-how-to-write-one" target="_blank">&gt;&gt;&nbsp;Ref : Guide of Rule file</a>
</div>
</div>
</div>
<div class="readMore listSection">
<div class="listContent">
<h4 class="subtitle" id="otherfeature">Other Features</h4>
<ul>
<li>Map file to local , filter your logs</li>
<li><a href="https://github.com/alibaba/anyproxy#throttling">Simulate a low-speed network</a> , help to test the performance of your app on poor network</li>
<li><a href="https://github.com/alibaba/anyproxy#work-as-a-module-for-nodejs" target="_blank">Using AnyProxy as an npm module</a> , to deploy your own debugging tools</li>
</ul>
</div>
</div>
<div class="learnMore listSection">
<div class="btnWrapper">
<h4 class="subtitle white" id="readmore">Read More</h4>
<a class="actionBtn actionBtnWhite" href="https://github.com/alibaba/anyproxy" target="_blank">https://github.com/alibaba/anyproxy</a>
</div>
</div>
<div class="footer"></div>
</div>
<link rel="stylesheet" type="text/css" href="/dest/github.css" />
<script src="/dest/lib.js"></script>
<script type="text/javascript">
Zepto(document).ready(function() {
Zepto('.sample code').each(function(i, block) {
hljs.highlightBlock(block);
});
});
</script>
</body>
</html>