mirror of
https://github.com/alibaba/anyproxy.git
synced 2025-04-21 14:04:21 +00:00
250 lines
10 KiB
HTML
250 lines
10 KiB
HTML
<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">$${summary}</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>
|
||
<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"></i>
|
||
</span>
|
||
<h4>${featureA}</h4>
|
||
<h5>${featureADesc}</h5>
|
||
</div>
|
||
<div class="item">
|
||
<span class="iconWrapper">
|
||
<i class="iconfont"></i>
|
||
</span>
|
||
<h4>${featureB}</h4>
|
||
<h5>${featureBDesc}<a href="https://github.com/alibaba/anyproxy/wiki/HTTPS%E7%9B%B8%E5%85%B3%E6%95%99%E7%A8%8B" target="_blank"><br>${featureBHowTo} >></a></h5>
|
||
</div>
|
||
<div class="item">
|
||
<span class="iconWrapper">
|
||
<i class="iconfont bigger"></i>
|
||
</span>
|
||
<h4>${featureC}</h4>
|
||
<h5>${featureCDesc}</h5>
|
||
</div>
|
||
<div class="item">
|
||
<span class="iconWrapper">
|
||
<i class="iconfont"></i>
|
||
</span>
|
||
<h4>${featureD}</h4>
|
||
<h5>${featureDDesc}</h5>
|
||
</div>
|
||
<div style="clear:both"></div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="quickstart listSection">
|
||
<div class="quickstartContent listContent">
|
||
<h4 class="subtitle" id="install">${installationTitle}</h4>
|
||
<ul>
|
||
<li>${installationStepA} <a href="http://nodejs.org/" target="_blank">Node.js</a> >= v0.12</li>
|
||
<li><code class="simpleBash">npm install -g anyproxy</code>, ${installationStepB}<code class="simpleBash">sudo</code></li>
|
||
<li><a href="https://github.com/alibaba/anyproxy#quick-start" target="_blank">More>></a></li>
|
||
</ul>
|
||
<h4 class="subtitle" id="quickstart">${quickStartTitle}</h4>
|
||
<ul>
|
||
<li>${quickStartStepA} <code class="simpleBash">anyproxy</code></li>
|
||
<li>${quickStartStepB}</li>
|
||
<li>${quickStartStepC}</li>
|
||
<li><a href="https://github.com/alibaba/anyproxy#quick-start" target="_blank">${quickStartMoreUsage} >></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 ">${sampleRuleTitle}</h4>
|
||
|
||
<div class="item">
|
||
<h5 class="itemTitle">${sampleATitle}</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">${sampleBTitle}</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">${sampleCTitle}</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">${sampleDTitle}</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="${ruleGuideLink}" target="_blank">>> ${ruleGuideText}</a>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<div class="readMore listSection">
|
||
<div class="listContent">
|
||
<h4 class="subtitle" id="otherfeature">${otherFeaturesTitle}</h4>
|
||
<ul>
|
||
<li>${otherFeatureA}</li>
|
||
<li><a href="https://github.com/alibaba/anyproxy#throttling">${otherFeatureB}</a>${otherFeatureBDesc}</li>
|
||
<li><a href="https://github.com/alibaba/anyproxy#work-as-a-module-for-nodejs" target="_blank">${otherFeatureC}</a>${otherFeatureCDesc}</li>
|
||
</ul>
|
||
{@if language == "cn"}
|
||
<h4 class="subtitle" id="ref">相关阅读</h4>
|
||
<ul>
|
||
<li><a href="https://github.com/alibaba/anyproxy/wiki/%E4%BB%A3%E7%90%86%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E6%96%B0%E8%BD%AE%E5%AD%90%EF%BC%9Aanyproxy" target="_blank">代理服务器的新轮子</a>,介绍AnyProxy的设计初衷,以及它的开放式设计可以解决什么问题。</li>
|
||
<li><a href="http://www.infoq.com/cn/presentations/alipay-hybrid-application-quality-assurance-practice" target="_blank">QCon - 《支付宝hybrid应用质量保证实践》</a>,涉及到AnyProxy在测试工程中的应用(By 陈晔)</li>
|
||
</ul>
|
||
{@/if}
|
||
</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> |