본문 바로가기

Language/Java / JSP

[Java] 프록시 적용하기

반응형

이전 포스팅에서 URLConnection 객체를 이용하여 외부 웹페이지를 Java에서 읽어오는 부분에 대하여 설명을 한적이 있다.


특별한 문제가 없는한 왠만한 웹페이지들은 해당 방법으로 접속이 되는데, 이러한 URL을 호출시 상대방 서버쪽에는 해당 프로그램을 실행한 PC의 IP가 로그로 남게 된다.

만약 특수한 목적으로 IP를 숨기고 싶거나, IP가 차단되었을경우 프록시를 이용하여 우회하고 싶다면 아래와 같이 하면 된다.



Java 소스에서 프록시 서버를 설정하는 방법은 간단하다. 소스코드 상에서 시스템 프로퍼티 지정을 통해 쉽게 적용이 가능하다.


Java에 포함되어 있는 System.setProperty 메소드를 이용하여 아래와 같이 호스트 IP와 port를 지정하면 된다.


 System.setProperty("http.proxyHost", 프록시 서버 IP) ;
 System.setProperty("http.proxyPort", 프록시 서버 Port) ;



[사용예]

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;


public class URLReader {

	public static void main(String[] args) {

		
		StringBuffer sbuf = new StringBuffer();
		
		try {
			
			// 프록시 설정
			System.setProperty("http.proxyHost", "107.182.135.43") ;
			System.setProperty("http.proxyPort", "8089");

			
			
			// URL 객체 생성
			URL url = new URL("http://www.naver.com");
			
			// URLConnection 생성
			URLConnection urlConn = url.openConnection();
			
			
			InputStream is = urlConn.getInputStream();
			InputStreamReader isr = new InputStreamReader(is, "UTF-8");


			BufferedReader br = new BufferedReader(isr);

			String str ;

			// 라인이 끝날때까지 한줄씩 읽어서 StringBuffer에 담는다.
			while((str=br.readLine()) != null){

			sbuf.append(str + "\r\n") ;

			}
		    
		    
			// 콘솔에 출력하기
			System.out.println(sbuf.toString()) ;
			
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		

	}

}





[관련글]

  프록시 서버 리스트 조회하기