JAVA 动态替换代理IP并模拟POST请求
来源:互联网 发布:5233软件下载 编辑:程序博客网 时间:2024/05/20 01:43
首先创建一下代理的IP和端口
package postTest;import java.util.List;/** * * 获取代理信息 * * */public class ProxyInfo {String proxyIP = null;String proxyPort = null; public String getProxyIP() {return proxyIP;}public void setProxyIP(String proxyIP) {this.proxyIP = proxyIP;}public String getProxyPort() {return proxyPort;}public void setProxyPort(String proxyPort) {this.proxyPort = proxyPort;}public static List<ProxyInfo> arrayList() {// TODO Auto-generated method stubreturn null;}}然后从文件中读入代理IP和端口列表,以空格分割
package postTest;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStreamReader;import java.io.UnsupportedEncodingException;import java.util.ArrayList;public class ReadFile {/** *读取TXT文件中的代理配置文件 *1、获得文件句柄 *2、 获得的句柄当作一个字节码流,对输入的码流进行读取 *读取到输入流之后,需要读取生成字节流 * 逐行输出 * 考虑到异常情况 * */public static ArrayList<ProxyInfo> readFile(String filePath){String encoding = "UTF-8";File file = new File(filePath);ProxyInfo proxys = new ProxyInfo();ArrayList<ProxyInfo> infos = new ArrayList<ProxyInfo>();if(file.isFile() && file.exists()){//判断文件是否存在try {InputStreamReader read = new InputStreamReader(new FileInputStream(file), encoding);//编码格式BufferedReader bufferedReader = new BufferedReader(read);String textLine = null;for(int i = 0; (textLine = bufferedReader.readLine()) != null; i++){String[] proxyInfo = textLine.split(" ");proxys.setProxyIP(proxyInfo[0]);proxys.setProxyPort(proxyInfo[1]);infos.add(proxys);//System.out.println(((ProxyInfo) infos.get(i)).getProxyIP());//System.out.println(((ProxyInfo) infos.get(i)).getProxyPort());}} catch (UnsupportedEncodingException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e){e.printStackTrace();}}else{System.out.println("Can not find the Proxy File");}return infos;}/*public static void main(String[] args){readFile("D:/proxy.txt");} */}
然后,将读入的IP列表设置为代理
package postTest;import postTest.*;import org.apache.log4j.*;import java.io.*;import java.net.*;import java.util.*;public class TestPost { private static final Logger log = Logger.getLogger(TestPost.class); public static void TestPost() throws IOException { /*ProxyInfo proxyInfo = new ProxyInfo(); String proxyIP = proxyInfo.getProxyIP(); int proxyPort = proxyInfo.getProxyPort();*/ //ReadFile.readFile(""); ArrayList<ProxyInfo> abc = ReadFile.readFile("D:/proxy.txt"); URL url = new URL("http://vote.sinabz.com/index.php?c=Index&a=tp"); for(int i = 0; i < 1; i++ ){ //Proxy proxy = new Proxy(Proxy.Type.DIRECT.HTTP, new InetSocketAddress("127.0.0.1", 8087)); System.getProperty("http.maxRedirects", "50"); System.getProperties().setProperty("proxySet", "true"); System.out.println("此时的代理服务器设置为" + abc.get(i).getProxyIP() + "端口号设置为" + abc.get(i).getProxyPort()); URLConnection connection = url.openConnection(); connection.setRequestProperty(//设置终端类型 "User-Agent", "Mozilla/4.0 (compatible; MSIE 7.0; NT 5.1; GTB5; .NET CLR 2.0.50727; CIBA)" ); System.getProperties().setProperty("http.proxyHost", abc.get(i).getProxyIP()); System.getProperties().setProperty("http.proxyPort", abc.get(i).getProxyPort()); connection.setDoOutput(true); OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "UTF-8"); out.write("id=19&submit="); // 向页面传递数据。post的关键所在! out.flush(); out.close(); // 一旦发送成功,用以下方法就可以得到服务器的回应: String sCurrentLine; String sTotalString; sCurrentLine = ""; sTotalString = ""; InputStream l_urlStream; l_urlStream = connection.getInputStream(); // 传说中的三层包装阿! BufferedReader l_reader = new BufferedReader(new InputStreamReader( l_urlStream)); while ((sCurrentLine = l_reader.readLine()) != null) { sTotalString += sCurrentLine + "\r\n"; } System.out.println(sTotalString); log.info(getHtml("http://www.ip138.com/ips138.asp?")); } } public static void main(String[] args) throws IOException { //System.setProperties(""); //System.setProperty("", ""); TestPost(); } /****************下面是从IP138获取一下是否正确设置了代理服务器**************/private static String getHtml(String address){ StringBuffer html = new StringBuffer(); String result = null; try{ URL url = new URL(address); URLConnection conn = url.openConnection(); conn.setRequestProperty("User-Agent","Mozilla/4.0 (compatible; MSIE 7.0; NT 5.1; GTB5; .NET CLR 2.0.50727; CIBA)"); BufferedInputStream in = new BufferedInputStream(conn.getInputStream()); try{ String inputLine; byte[] buf = new byte[4096]; int bytesRead = 0; while (bytesRead >= 0) { inputLine = new String(buf, 0, bytesRead, "ISO-8859-1"); html.append(inputLine); bytesRead = in.read(buf); inputLine = null; } buf = null; }finally{ in.close(); conn = null; url = null; } result = new String(html.toString().trim().getBytes("ISO-8859-1"), "gb2312").toLowerCase(); }catch (Exception e) { e.printStackTrace(); return null; }finally{ html = null; } System.out.println(result); return result; } }
0 0
- JAVA 动态替换代理IP并模拟POST请求
- JAVA 动态替换代理IP并模拟POST请求第二弹<转自ITeye>
- java模拟http的Get/Post请求,并设置ip与port代理
- Java模拟post请求
- JAVA模拟POST请求
- Java模拟Post请求
- JAVA模拟post请求
- java 模拟post请求
- Java模拟post请求
- java模拟post请求
- java 模拟post请求
- 突破IP限制动态替换代理ip。
- 模拟java动态代理
- JAVA动态代理模拟
- java模拟get/post请求
- Java中使用多线程、curl及代理IP模拟post提交和get访问
- Java中使用多线程、curl及代理IP模拟post提交和get访问
- 模拟JDK动态代理 ; 自己动手模拟实现java动态代理
- js获取当前域名
- android:fastScrollEnabled和android:drawSelectorOnTop
- 线程----BlockingQueue (转)
- 好莱坞艳照门女星曝光 奥斯卡影后詹妮弗劳伦斯艳照流出
- android:点击popupwindow以外区域 popupwindow自动消失
- JAVA 动态替换代理IP并模拟POST请求
- Android Notification之监听系统清除通知栏方法
- 笔记系列1
- QML类型说明-CompassReading
- MySkin仿QQ皮肤,零基础拥有漂亮的软件界面
- Django学习第一天
- java 泛型应用
- VB.NET基础 字符串相关的函数
- java中hashCode的作用