java抓取数据+破解屏蔽ip访问【多线程数据采集之三】
2012-11-07 11:27
393 查看
java抓取数据+破解屏蔽ip访问
今天就讲解一下,怎么破解 服务器 屏蔽ip的请求。
现在大多网站采取 ip访问次数达到一定次数就屏蔽ip的功能。
那么要破解服务器的屏蔽。 就只有改变ip, 或者代理ip。
如果用代理,哪里去找那么多ip呢。 用adsl 获取动态ip不是很简单吗。
转载注明出处:http://blog.csdn.net/column/details/threadgrab.html
那么现在就贴上adsl获取动态ip的方案实例源码
1、抓取网页数据的时候 catch异常之后 , 就采取拨号程序
2、拨号获取动态ip的 工具类
采用上述办法,基本上就可以解决拨号的问题了。
如果程序加入了多线程。 那么就必须考虑多线程,拨号同步,以及数据同步问题。 提高效率和避免重复操作。
到此,破解屏蔽ip访问就搞定了!
今天就讲解一下,怎么破解 服务器 屏蔽ip的请求。
现在大多网站采取 ip访问次数达到一定次数就屏蔽ip的功能。
那么要破解服务器的屏蔽。 就只有改变ip, 或者代理ip。
如果用代理,哪里去找那么多ip呢。 用adsl 获取动态ip不是很简单吗。
转载注明出处:http://blog.csdn.net/column/details/threadgrab.html
那么现在就贴上adsl获取动态ip的方案实例源码
1、抓取网页数据的时候 catch异常之后 , 就采取拨号程序
//门票浏览 url参数 http://www.lvmama.com/dest/lantiancheng public static DataBean getWebData1(String url){ DataBean data = null; try { Document docdata = Jsoup.connect(url).timeout(20000).get(); } catch (Exception e) { e.printStackTrace(); //拨号一下 ConnectAdslNet.reconnectAdsl("宽带",Main.adslname,Main.adslpass); } return data; }
2、拨号获取动态ip的 工具类
import java.io.BufferedReader; import java.io.InputStreamReader; import org.apache.log4j.Logger; /** * * ADSL拨号上网 * Windwos操作系统需要是GBK编码 * @author yijianfeng * */ public class ConnectAdslNet { static Logger logger = Logger.getLogger(ConnectAdslNet.class); /** * 执行CMD命令,并返回String字符串 */ public static String executeCmd(String strCmd) throws Exception { Process p = Runtime.getRuntime().exec("cmd /c " + strCmd); StringBuilder sbCmd = new StringBuilder(); //注意编码 GBK BufferedReader br = new BufferedReader(new InputStreamReader(p .getInputStream(),"GBK")); String line; while ((line = br.readLine()) != null) { sbCmd.append(line + "\n"); } return sbCmd.toString(); } /** * 连接ADSL */ public static boolean connectAdsl(String adslTitle, String adslName, String adslPass) throws Exception { System.out.println("正在建立连接."); String adslCmd = "rasdial " + adslTitle + " " + adslName + " " + adslPass; String tempCmd = executeCmd(adslCmd); // 判断是否连接成功 if (tempCmd.indexOf("已连接") > 0) { System.out.println("已成功建立连接."); return true; } else { System.out.println(tempCmd); System.out.println("建立连接失败"); return false; } } /** * 断开ADSL */ public static boolean disconnectAdsl(String adslTitle) throws Exception { String disconnectAdsl = "rasdial " + adslTitle + " /disconnect"; String result = executeCmd(disconnectAdsl); if (result.indexOf("没有连接")!=-1){ System.out.println(adslTitle + "连接不存在!"); return false; } else { System.out.println("连接已断开"); return true; } } /** * adsl重新拨号,尖锋网和七七八八网推支持失败不断重拨 * @param args * @throws Exception */ public static boolean reconnectAdsl(String adslTitle, String adslName, String adslPass){ boolean bAdsl = false; try { disconnectAdsl(adslTitle); Thread.sleep(3000); bAdsl = connectAdsl(adslTitle,adslName,adslPass); Thread.sleep(3000); int i = 0; while (!bAdsl){ disconnectAdsl(adslTitle); Thread.sleep(3000); bAdsl = connectAdsl(adslTitle,adslName,adslPass); Thread.sleep(3000); if(i>5){ break; } } }catch(Exception e){ logger.error("ADSL拨号异常:", e); } return bAdsl; } public static void main(String[] args) throws Exception { // reconnectAdsl("宽带","adsl账号","密码"); } }
采用上述办法,基本上就可以解决拨号的问题了。
如果程序加入了多线程。 那么就必须考虑多线程,拨号同步,以及数据同步问题。 提高效率和避免重复操作。
到此,破解屏蔽ip访问就搞定了!
相关文章推荐
- 【多线程数据采集之三】java抓取数据+破解屏蔽ip访问 .
- java抓取数据+破解屏蔽ip访问【多线程数据采集之三】
- java抓取数据+破解屏蔽ip访问【多线程数据采集之三】
- java破解ip屏蔽+多线程同步拨号-【多线程数据采集之五】
- java破解ip屏蔽+多线程同步拨号-【多线程数据采集之五】
- java抓取数据+破解屏蔽ip访问【多…
- java多线程采集+线程同步-【多线程数据采集之四】
- java采集网页数据方法【多线程数据采集之一】
- java破解ip屏蔽+多线程同步
- 海量日志数据提取某日访问百度次数最多的那个IP的Java实现
- 用curl抓取网站数据,仿造IP、防屏蔽终极强悍解决方式
- 用curl抓取网站数据,仿造IP、防屏蔽终极强悍解决方式
- [置顶] Java数据采集-3.抓取开源中国新闻(新版)
- 用curl抓取网站数据,仿造IP、防屏蔽终极强悍解决方式
- 海量日志数据提取某日访问百度次数最多的那个IP的Java实现
- Java中使用多线程、curl及代理IP模拟post提交和get访问
- IBM Java多线程 - 4.共享对数据的访问
- java使用多线程进行分页数据采集
- java多线程-使用ReadWriteLock同步数据访问