我正在尝试创建一个web应用程序来实现web代理。
如果你不知道什么是web代理,那么请看一个实现的例子http://webproxy.to/
我已经创建了servlet web-proxy.do
servlet代码:
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
String proxy = request.getParameter("proxy");
URL url = new URL(request.getParameter("url"));
String page = downloadTextFile(url, proxy);
try (PrintWriter out = response.getWriter()) {
out.println(page);
}
}
private String downloadTextFile(final URL url, final String proxy) throws IOException {
URLConnection connection = null;
if (proxy.isEmpty()) {
connection = url.openConnection();
} else {
String host = proxy.replaceAll(":.*", "");
int port = Integer.parseInt(proxy.replaceAll(".*:", ""));
SocketAddress socketAddress = new InetSocketAddress(host, port);
Proxy theProxy = new Proxy(Proxy.Type.SOCKS, socketAddress);
connection = url.openConnection(theProxy);
}
try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8))) {
return reader.lines().collect(Collectors.joining("\n"));
}
}
方法 downloadTextFile()
如果它是从单元测试调用的,它就可以工作。方法 downloadTextFile()
如果从weblogic服务器调用,则不起作用。
对于https web-proxy.do?url=https://wtfismyip.com&proxy=138.59.205.37:9811
weblogic返回下一个异常消息:
weblogic日志:
<Sep 7, 2020 2:59:18,618 PM BST> <Error> <HTTP> <BEA-101019><[ServletContext@1989240948[app:bc.doc_pragmatic-web-proxy_war_1.0 module:pragmatic-web-proxy-1.0 path:null spec-version:3.1]] Servlet failed with an IOException.
java.net.ProtocolException: unrecognized response from SSL proxy: '
对于http web-proxy.do?url=http://wtfismyip.com&proxy=138.59.205.37:9811
weblogic返回带有单个符号的页面 [
:
而且没有代理 http://localhost:7001/pragmatic-web-proxy/web-proxy.do?url=https://wtfismyip.com&proxy=
它按预期加载页面。
请让我知道,如果有任何一个已修复类似的问题。
1条答案
按热度按时间0kjbasz61#
这可能是wtfismyip.com上支持的tls CipherSuite存在问题。是否代理http://wtfismyip.com/ 工作?