java扫描免费代理服务器
>概念:
代理(英语:Proxy),也称网络代理,是一种特殊的网络服务,允许一个网络终端(一般为客户端)
通过这个服务与另一个网络终端(一般为服务器)进行非直接的连接。一些网关、路由器等网络设备
具备网络代理功能。一般认为代理服务有利于保障网络终端的隐私或安全,防止攻击。
1 突破自生IP访问限制。2 网络用户可以通过代理访问外国网站。3 访问一些单位或团体内部资源。4 突破中国电信的IP封锁。5 提高访问速度6 隐藏真实IP。有防火墙的功能。
>>在学习中,由于需要频繁抓取一些网站的数据,而且保证数据的实时性,有效性,就需要多次访问服务器。
>>文中所用到的代理服务器并不是从网络中扫描得到,而是在http://www.xicidaili.com/nn/这个网站中提取而来,
>>由于只是为了验证与学习,文章中代码比较乱,下文中的程序属于半成品,但是为了更好理解,我在此说明
文中有两个主方法,其实就是两个小程序,一个是StartIPSet,这个主要是把提取出来的数据放置在数据库中,
package pitd;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;import org.htmlcleaner.HtmlCleaner;
import org.htmlcleaner.TagNode;import dao.DBUtil;public class StartIPSet {public static void main(String[] args) {StartIPSet s=new StartIPSet();s.update();}public void put() {String sql = "insert into proxyip values(?,?,?,?,?,sysdate)";Connection con = null;PreparedStatement ps = null;try {/** fw = new FileWriter(* "C:\\Users\\Administrator\\Desktop\\proxyIP.txt");*/// out=new BufferedWriter(new// FileWriter("C:\\Users\\Administrator\\Desktop\\proxyIP.txt"));HtmlCleaner cleaner = new HtmlCleaner();TagNode tagNode = cleaner.clean(DownloadHtml.getHtml());Object[] action = tagNode.getElementsByName("td", true);System.out.println(action.length);con = DBUtil.getConnection();con.setAutoCommit(false);ps = con.prepareStatement(sql);for (int i = 1; i < action.length - 6;) {for (int j = 1; j <= 5; j++) {TagNode tna = (TagNode) action[i];ps.setString(j, tna.getText().toString());i++;}i = i + 5;ps.addBatch();}ps.executeBatch();con.commit();con.setAutoCommit(true);} catch (SQLException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();} finally {DBUtil.closePreparedStatement(ps);DBUtil.closeConnection(con);}}public void update(){String sql="truncate table proxyip";Connection con=null;Statement st=null;try {con=DBUtil.getConnection();st=con.createStatement();st.execute(sql);} catch (ClassNotFoundException | SQLException e) {e.printStackTrace();}finally{DBUtil.closeStatement(st);DBUtil.closeConnection(con);}put();}
}
GetCookie:
package pitd;import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;public class GetCookie {public static String getCookie(String url){HttpURLConnection conn=null;String cookie=null;StringBuffer result=new StringBuffer();try {URL u=new URL(url);conn = (HttpURLConnection)u.openConnection(); conn.setRequestMethod("GET");conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36");//conn.setRequestProperty("Accept-Encoding", "gzip, deflate, sdch"); //kongzhi bainmaconn.setRequestProperty("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");conn.setInstanceFollowRedirects(false); System.out.println(conn.getResponseCode());String cookieskey = "Set-Cookie"; cookie = conn.getHeaderField(cookieskey);} catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {URL u=new URL(url);conn = (HttpURLConnection)u.openConnection(); conn.setRequestMethod("GET");conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36");//conn.setRequestProperty("Accept-Encoding", "gzip, deflate, sdch"); //kongzhi bainmaconn.setRequestProperty("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");conn.setInstanceFollowRedirects(false); conn.setRequestProperty("Cookie", cookie);conn.connect();System.out.println(conn.getResponseCode());String cookieskey = "Set-Cookie"; String cookie2 = conn.getHeaderField(cookieskey);result.append(cookie+";"+cookie2);System.out.println(result.toString());} catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return result.toString();}
}
DownloadHtml:
package pitd;import java.io.BufferedReader;
import java.io.FileWriter;import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;public class DownloadHtml {public static String getHtml() {URL url;StringBuffer contentBuffer = new StringBuffer();FileWriter fw;String htmlstr=null;HttpURLConnection conn=null;try {fw = new FileWriter("C:\\Users\\Administrator\\Desktop\\crawler.txt");String urlPath="http://www.xicidaili.com/nn/";url = new URL(urlPath);conn = (HttpURLConnection)url.openConnection(); conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36");//conn.setRequestProperty("Accept-Encoding", "gzip, deflate, sdch"); //kongzhi bainmaconn.setRequestProperty("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");conn.setInstanceFollowRedirects(true); conn.setRequestProperty("Connection", "keep-alive"); conn.setRequestProperty("Upgrade-Insecure-Requests", "1"); conn.setRequestProperty("Cookie",GetCookie.getCookie(urlPath));conn.connect();int returnCode = conn.getResponseCode();if (returnCode == 200) {InputStream input = conn.getInputStream();InputStreamReader istreamReader = new InputStreamReader(input, "UTF-8");BufferedReader buffStr = new BufferedReader(istreamReader);String str = null;while ((str = buffStr.readLine()) != null)contentBuffer.append(str);htmlstr = contentBuffer.toString();System.out.println(htmlstr);fw.write(htmlstr);input.close();istreamReader.close();buffStr.close();fw.close();}} catch (Exception e) {e.printStackTrace();} finally {if (conn != null) {conn.disconnect();}}return htmlstr;}
}
TestProxy:
package proxyip;import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.InetSocketAddress;
import java.net.MalformedURLException;
import java.net.Proxy;
import java.net.URL;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.regex.Matcher;
import java.util.regex.Pattern;import pitd.GetCookie;
import dao.DBUtil;public class TestProxy {static Proxy proxy = null;Connection con = null;Statement st = null;ResultSet rs = null;public static void main(String[] args) throws IOException {try {@SuppressWarnings("unchecked")// 使用反射加载类。Class<TestProxy> clazz = (Class<TestProxy>) Class.forName("proxyip.TestProxy");TestProxy tp = clazz.newInstance();tp.checkProxy();} catch (ClassNotFoundException e) {e.printStackTrace();} catch (InstantiationException e) {e.printStackTrace();} catch (IllegalAccessException e) {e.printStackTrace();}}public void checkProxy() {int count = 100;try {String sql = "select * from proxyip";con = DBUtil.getConnection();st = con.createStatement();rs = st.executeQuery(sql);do {rs.next();count--;System.out.print("数据库中取出的数据为:");System.out.println(rs.getString(1) + "\t"+ new Integer(rs.getString(2)));proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(rs.getString(1), new Integer(rs.getString(2))));// 确定代理是否设置成功if (statuOk()) {System.out.println("<<<<----代理成功————>>>>\n代理信息:");System.out.println("Address:" + rs.getString(1) + "\nPort:"+ rs.getString(2) + "\nLocaltion:" + rs.getString("LOCALTION")+ "\nAnony:" + rs.getString(4) + "\nProtocal:"+ rs.getString(5));break;} else if (count <= 0) {System.out.println("代理失败,ip资源不足!");break;}} while (true);} catch (ClassNotFoundException | SQLException e) {e.printStackTrace();} finally {DBUtil.closeResultSet(rs);DBUtil.closeStatement(st);DBUtil.closeConnection(con);}}public boolean statuOk() {int flag = 0;String localIP = getV4IP();System.out.println("start...");try {String ipInfo = getHtml("http://ip.chinaz.com/getip.aspx");// http://city.ip138.com/ip2city.aspPattern p = Pattern.compile("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}");Matcher m = p.matcher(ipInfo);if (m.find()) {String proxyIP = m.group(0);System.out.println("正在检测的代理ip:" + proxyIP);if (!localIP.equals(proxyIP)) {System.out.println("本机ip:" + localIP);flag = 1;}}} catch (Exception e) {System.out.println(e.getMessage());flag = 0;}if (flag == 1) {return true;} else {return false;}}private static String getHtml(String address) throws Exception {StringBuffer html = new StringBuffer();String result = null;/** System.getProperties().setProperty("proxySet", "true"); //* 如果不设置,只要代理IP和代理端口正确,此项不设置也可以 String ip = "218.56.132.158";* * System.getProperties().setProperty("http.proxyHost",* "202.124.205.26");* System.getProperties().setProperty("http.proxyPort", "3128");*/URL url = new URL(address);HttpURLConnection con = (HttpURLConnection) url.openConnection(proxy);con.setConnectTimeout(5000);con.setDoInput(true);con.setRequestMethod("GET");// 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(con.getInputStream());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;in.close();con = null;url = null;result = new String(html.toString().trim().getBytes("ISO-8859-1"),"gb2312").toLowerCase();return result;}public String getV4IP() {String ip = "";String chinaz = "http://ip.chinaz.com/getip.aspx";StringBuilder inputLine = new StringBuilder();String read = "";URL url = null;HttpURLConnection urlConnection = null;BufferedReader in = null;try {url = new URL(chinaz);urlConnection = (HttpURLConnection) url.openConnection();urlConnection.setRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36");// conn.setRequestProperty("Accept-Encoding",// "gzip, deflate, sdch"); //kongzhi bainmaurlConnection.setRequestProperty("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");urlConnection.setInstanceFollowRedirects(true);urlConnection.setRequestProperty("Connection", "keep-alive");urlConnection.setRequestProperty("Upgrade-Insecure-Requests", "1");urlConnection.connect();if (urlConnection.getResponseCode() == 200) {in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), "UTF-8"));while ((read = in.readLine()) != null) {inputLine.append(read);}}// System.out.println(inputLine.toString());} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {if (in != null) {try {in.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}// "\\<dd class\\=\"fz24\">(.*?)\\<\\/dd>"Pattern p = Pattern.compile("\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}");Matcher m = p.matcher(inputLine.toString());if (m.find()) {String ipstr = m.group(0);ip = ipstr;}return ip;}
}
java扫描免费代理服务器相关推荐
- 编程语言Java 扫描识别条形码图片
编程语言Java 扫描识别条形码图片 1.条形码扫描识别的实现方法及步骤 本文以Java代码示例介绍如何来扫描和识别条形码图片.这里使用免费条码工具 Free Spire.Barcode for Ja ...
- java 扫描文件测试_适用于Java开发人员的微服务:安全测试和扫描
java 扫描文件测试 1.简介 本教程的这一部分专门讨论安全性测试,将围绕被证明在软件开发领域(包括微服务 )中无价的测试策略进行总结. 尽管软件项目中的安全方面每天都变得越来越重要,但是令人惊讶的 ...
- 【JAVA资料免费下载】158个JAVA免豆精品资料汇总——下载目录(转载)
[JAVA资料免费下载]158个JAVA免豆精品资料汇总--下载目录(转载) 应广大网友要求,最近小弟整理了一批免积分下载的Java优质资料,因资料众多,一一将资料上传上来需要时间,先将下载目录分享给 ...
- java扫描指定主机的端口socket服务
全栈工程师开发手册 (作者:栾鹏) java教程全解 java扫描指定主机的端口服务.此处扫描本机的端口.获取具有socket服务的端口 当端口不存在socket服务时,会抛出异常. 测试代码 pub ...
- 爬虫I号 :获取免费代理服务器进行代理验证
闲来无聊,正儿八经写的个人第一Python小程序 ------爬虫I号:获取免费代理服务器&自动验证 需求: 获取西刺代理网站http://www.xicidaili.com/wn/的免费代理 ...
- 【JAVA资料免费下载】158个JAVA免豆精品资料汇总——下载目录
2019独角兽企业重金招聘Python工程师标准>>> 应广大网友要求,最近小弟整理了一批免积分下载的Java优质资料,因资料众多,一一将资料上传上来需要时间,先将下载目录分享给大家 ...
- Java 提升 免费视频集合
各大教育平台教学视频/公开课集合 持续更新中- 一. 全部课程_IT培训精品课程-慕课网 二. 免费课-Java,Python,大数据,UI,前端,区块链培训-博学谷 三. Java在线培训视频教程_ ...
- 用Java开发HTTP代理服务器
HTTP代理服务器是一种网络应用,它充当位于客户端和目标服务器之间的中间节点,将客户端发出的HTTP请求转发给目标服务器,并将目标服务器返回的HTTP响应内容回传给客户端.通过使用代理服务器,客户端可 ...
- java从多少不免费了_Java要开始收费了,为什么使用了23年的Java不再免费?
1.不再更新,继续无限期地使用 Oracle JDK 8 : 2.使用来自其他服务商的免费 Java SE 8 / OpenJDK 8 二进制分发版. 面对JDK 8即将停止免费更新支持.JDK 11 ...
- 【JAVA资料免费下载】
[JAVA资料免费下载]158个JAVA免豆精品资料汇总--下载目录(转载) 应广大网友要求,最近小弟整理了一批免积分下载的Java优质资料,因资料众多,一一将资料上传上来需要时间,先将下载目录分享给 ...
最新文章
- linux安装无线电软件,基于Linux的软件无线电系统软件平台的研究与实现
- Could not load type 'System.Web.Mvc.ViewPagedynamic' in asp.net mvc2 after publishing the website
- 使Docker搭建Java Web运行环境
- 「万字图文」史上最姨母级Java继承详解
- 上海应用物理所计算机,【中国科学报】上海应用物理所建立组合学原理DNA计算器原型...
- Spring Web MVC架构
- H.266 参考软件VTM下载和安装
- compareto 和_清洁责任–摆脱均等,compareTo和toString
- 计算机考研英语有听力吗,考研英语有听力吗
- 两个三维向量叉积_线性代数的本质08 叉积
- 人脸关键点检测论文总结
- c语言提示函数已有主体,C++中的函数名称粉碎机制和它的逆向应用 筋斗云网络...
- Java读取Excel表格公式对应的值
- 十秒清理电脑垃圾文件
- 教师备课计算机教师管理制度,计算机学院教学过程管理中教师职责与问责暂行规定--中地大计字[2016]03号...
- excel文档打不开怎么修复?
- PS案例实战,从基础到精通 淘宝美工/海报制作/人物精修-姜浩-专题视频课程
- Python之pyc文件作用及生成方法
- canvas画的北斗七星和大熊座
- SOJ 4583 动态规划之分组背包
热门文章
- informix数据库unload下载数据和load上传数据
- Autorun.inf病毒和qhbpriAppInit_DLLs专杀
- RIPv1配置(Enabling Rip)
- Ozone SCM HA设计浅谈
- CSS Reset Modern CSS Reset
- i.MX6ULL终结者RS232驱动测试及RS485测试
- android 著名播放器,十二大最著名的Android播放器开源项目
- 记事本编码html乱码,记事本乱码怎么办【解决方法】
- 利用GPU实现大规模动画角色的渲染
- 从零开始学python必看,最强“Python编程三剑客(pdf)”,你值得拥有!