2011-01-05 4 views
21

웹 사이트에 연결하고 크롤러와 같은 일부 코드를 확인하는 코드를 작성하고 있습니다. 하지만 물음표를 프록시에 연결하고 IP 주소를 변경해야합니다 (따라서 서버 로그에 클라이언트의 IP가 표시되지 않습니다).자바에서 HTTP 프록시를 사용하는 방법

어떻게하면 자바를 통해이 작업을 수행 할 수 있습니까?

+23

음, 네가 좋은 것을 좋아하는 것 같아. – stevebot

답변

43

java 시스템 등록 정보를 사용하여 프록시를 설정하거나 명령 줄 옵션으로 전달할 수 있습니다.

일부 세부 정보 및 샘플 here을 찾을 수 있습니다.

예 : 연결

System.setProperty("http.proxyHost", "myProxyServer.com"); 
System.setProperty("http.proxyPort", "80"); 

를 열거 나 당신이 시스템이 재부에 구성된 기본 네트워크 프록시를 사용하기 전에

System.setProperty("java.net.useSystemProxies", "true"); 

자바 1.5 이후 당신은 프록시의 인스턴스를 만들 수에 전달 openConnection() 방법.

Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("123.0.0.1", 8080)); 
URL url = new URL("http://www.yahoo.com"); 
HttpURLConnection uc = (HttpURLConnection)url.openConnection(proxy); 
uc.connect(); 

또는 lisak 제안으로, 당신은 더 나은 당신의 필요를 지원하는 어떤 제 3의 라이브러리를 사용할 수 있습니다.

+1

HTTPS의 프록시 구성은 약간 다른 속성을 사용합니다. System.setProperty ("https.proxyHost", "myProxyServer.com") ;. 처음에 왜 이것이 제대로 작동하지 않는지 궁금 해서요. 내 코드가 HTTPS를 사용했기 때문입니다. – talawahtech

+1

Proxy.Type.HTTPS (보안) 상수가 전혀없는 이유는 무엇입니까? – Stefan

10

또는 HttpClient을 사용하여 사용자의 요구에 더 잘 부합 할 수 있습니다. 설명서를 확인하십시오. 간단하고 유익합니다.

DefaultHttpClient httpclient = new DefaultHttpClient(); 

HttpHost proxy = new HttpHost("someproxy", 8080); 
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy); 
+0

자습서는 다음과 같습니다. [link] (https://hc.apache.org/httpcomponents-client-4.3.x/tutorial/html/connmgmt.html#d5e475) –

관련 문제