我需要驗證一些用戶請求,所以我試圖使用LittleProxy。這個想法是讓它對用戶透明(iptables> littleproxy>原始服務器)。Littleproxy無限循環
所以我使用iptables重定向流量LittleProxy(即監聽127.0.0.1:3127)如下:
iptables -t nat -A OUTPUT -p tcp -o eth0 --dport 80 -j DNAT --to 127.0.0.1:3127
如果我啓動它使用withTransparent(true)
,我收到一個錯誤400對URI的錯誤請求。這是由於遵循RFC 7230而發生的。
final HttpProxyServer server = DefaultHttpProxyServer.bootstrap()
.withPort(3127).withTransparent(true).start();
於是,我就按以下方式啓動它,並更改請求URI:
final HttpProxyServer server = DefaultHttpProxyServer.bootstrap()
.withPort(3127).withTransparent(false)
.withFiltersSource(new HttpFiltersSourceAdapterExt()).start();
而且overrided方法如下:
@Override
public HttpResponse clientToProxyRequest(HttpObject httpObject) {
if (httpObject instanceof DefaultHttpRequest) {
final DefaultHttpRequest request = (DefaultHttpRequest) httpObject;
final String host = request.headers().get(HttpHeaders.Names.HOST);
request.setUri("http://" + host + request.getUri());
}
return null;
}
但改變URI導致無限循環到LittleProxy中。每次添加新的通過標題。
我也試過用.withAllowRequestToOriginServer(true)
但是.withTransparent(true)
也會造成無限循環。
學習DirectRequestTest.java
我看到我可以測試標題並檢查它是否已經有「Via」,但我不想中止請求。我仍然希望LittleProxy調用原始服務器,檢索並向用戶提供響應。
所以我的問題是,我怎麼用LittleProxy實現這個場景?
你想出這一個呢還是Bob? –
我認爲你的問題類似於這個問題:https://github.com/adamfisk/LittleProxy/issues/146 –
你可以得到這個工作? –