java假设模拟请求重新启动路由器(网络爬虫经常使用),还有java怎样下载图片

时间:2023-02-25 13:21:35

我们假设在公司或家里使用网络爬虫去抓取自己索要的一些数据的时候,经常对方的站点有defence机制,会给你的http请求返回500错误,仅仅要是同样IP就请求不到数据,这时候我们仅仅能去重新启动路由器,这样IP地址会改变,网络爬虫就能正常工作了

以下是通过发送Socket请求来模拟路由器的重新启动指令:

protected void rebotadsl() {
try {
BufferedOutputStream sender = null;
String url = baseURL;
URL target = new URL(url);
InetAddress address = InetAddress.getByName(target.getHost());
Socket client = new Socket(address, 8080);
sender = new BufferedOutputStream(client.getOutputStream());
String str = "";
String cmd = "GET "
+ "/userRpm/StatusRpm.htm?Disconnect=%B6%CF%20%CF%DF&wan=1"
+ " HTTP/1.0\r\n" + "User-Agent: myselfHttp/1.0\r\n"
+ "Accept: www/source; text/html; image/gif; */*\r\n"
+ "Authorization: Basic" + " " + luyou + "\r\n"
+ "\r\n"; //luyou填写路由器的password,如YWRtaW46d2FuZzIwMDU=
sender.write(cmd.getBytes(), 0, cmd.length());
sender.flush();
System.out.println("因为重定向路由器断线了"); } catch (Exception ex) {
ex.printStackTrace(); } }

当然了,我们得写一个算法来使用这个函数,如两次重新启动路由器时间不能太短

java下载图片:

/**
*发送图片信息到server下载图片,应用ISO8859-1
*/
public void sendPic(String url,String story,String name){
setURL(url);
HttpClient http = new HttpClient();
http.getHttpConnectionManager().getParams().setConnectionTimeout(100000);
GetMethod get=null;
try{
get = new GetMethod(url);
}catch(IllegalArgumentException ex){
Log.logException("url带有不规则字符", ex);
setStatus(baseURL, ERROR);
_body.setLength(0);
return;
}
get.getParams().setParameter(HttpMethodParams.SO_TIMEOUT,100000);
get.setFollowRedirects(false);
int er = 0;
try{
get.addRequestHeader("user-agent",useragent);
er = http.executeMethod(get);
System.out.println("server return code"+er);
}catch(Exception ex){
System.out.println("发送图片url到server訪问失败");
try{
Thread.sleep(120000);
}catch(InterruptedException e){
}
try {
er = http.executeMethod(get);
} catch (Exception e) {
System.out.println("连不上server,系统将推出");
System.exit(0);
}
} if (er == 200) {
InputStream is = null;
//读取从server传过来的页面数据
try {
is = get.getResponseBodyAsStream();
} catch (Exception e) {
System.out.println("读取server内容响应时错误发生");
}
byte buffer[] = new byte[20480];
byte tbuf[] = new byte[204800];
StringBuffer bf = new StringBuffer();
try {
int tl=0;
while (true) {
int l = is.read(buffer);
if (l < 0 || l+tl>204800)
break;
for(int jj=0;jj<l;jj++)
tbuf[tl+jj]=buffer[jj];
tl+=l;
}
bf.append(new String(tbuf, 0, tl, "ISO8859-1"));
_body.setLength(0);
_body.append(bf.toString());
}catch(IOException ex){
System.out.println("将server的数据转换成String时错误发生");
} }//end if(er == 200)
//下载图片到硬盘上 File outputfile = new File(story,name);
try{
FileOutputStream fos = new FileOutputStream(outputfile);
fos.write(_body.toString().getBytes("ISO8859-1"));
fos.close();
}catch(IOException ex){
System.out.println("IO存本地错误发生");
}
} // 返回true表示该url在数据库中已存在
public boolean URLisExist(String url) {
ResultSet rs = null;
boolean b = true;
int count = 0;
try {
_prepGetCount.setString(1, url);
rs = _prepGetCount.executeQuery();
rs.next();
count = rs.getInt("qty");
} catch (Exception ex) {
System.out.println("URLisExist错误发生");
try {
if (rs != null) {
rs.close();
}
} catch (Exception e1) {
System.out.println("rs关闭时错误发生");
}
}
if (count < 1)
b = false;
return b;
}

java假设模拟请求重新启动路由器(网络爬虫经常使用),还有java怎样下载图片的更多相关文章

  1. JAVA获取客户端请求的当前网络ip地址(附:Nginx反向代理后获取客户端请求的真实IP)

    1. JAVA获取客户端请求的当前网络ip地址: /** * 获取客户端请求的当前网络ip * @param request * @return */ public static String get ...

  2. 《精通Python网络爬虫》&vert;百度网盘免费下载&vert;Python爬虫实战

    <精通Python网络爬虫>|百度网盘免费下载|Python爬虫实战 提取码:7wr5 内容简介 为什么写这本书 网络爬虫其实很早就出现了,最开始网络爬虫主要应用在各种搜索引擎中.在搜索引 ...

  3. 从零开始学Python网络爬虫PDF高清完整版免费下载&vert;百度网盘

    百度网盘:从零开始学Python网络爬虫PDF高清完整版免费下载 提取码:wy36 目录 前言第1章 Python零基础语法入门 11.1 Python与PyCharm安装 11.1.1 Python ...

  4. 第三百二十五节,web爬虫,scrapy模块标签选择器下载图片,以及正则匹配标签

    第三百二十五节,web爬虫,scrapy模块标签选择器下载图片,以及正则匹配标签 标签选择器对象 HtmlXPathSelector()创建标签选择器对象,参数接收response回调的html对象需 ...

  5. 从0开始学爬虫11之使用requests库下载图片

    从0开始学爬虫11之使用requests库下载图片 # coding=utf-8 import requests def download_imgage(): ''' demo: 下载图片 ''' h ...

  6. 网络爬虫讲解(附java实现的实例)

    本文转载http://blog.csdn.net/luo*/article/details/6870898 转载过来主要是防止想百度文库一样突然停止运作,导致很多文库丢失而无法找寻 网络蜘 ...

  7. Java HttpURLConnection模拟请求Rest接口解决中文乱码问题

    转自:http://blog.csdn.net/hwj3747/article/details/53635539 在Java使用HttpURLConnection请求rest接口的时候出现了POST请 ...

  8. Python网络爬虫笔记(五):下载、分析京东P20销售数据

    (一)  分析网页 下载下面这个链接的销售数据 https://item.jd.com/6733026.html#comment 1.      翻页的时候,谷歌F12的Network页签可以看到下面 ...

  9. java假设去请求一个网页的数据

    我们能够通过在java程序中模拟浏览器一样,把数据抓下来,详细方法是在java程序中set header和cookie,以下是一个样例: public class NetConnection { pu ...

随机推荐

  1. 从零开始学Python第七周:面向对象进阶(需修改)

    一,类的属性 (1)示例 通过属性获取已经创建对象的个数 class Plane: pCount = 0 #类属性 def __init__(self,name,category): self.nam ...

  2. jQuery的XX如何实现?——2&period;show与链式调用

    往期回顾: jQuery的XX如何实现?——1.框架 -------------------------- 源码链接:内附实例代码 jQuery使用许久了,但是有一些API的实现实在想不通.于是抽空看 ...

  3. ecshop商品详细描述调用商品相册代码

    该修改方法让用户体验更好,特别是ecshop建站的用户产品描叙文字不多的朋友,直接让相册图显示在产品描述里.免去除在后台添加了 <div style="text-align:cente ...

  4. 用Set中元素做条件查询

    一个老师教许多学生,一个学生被许多老师教,一个学生有好多书,同一种书被许多同学拥有.查询教拥有书"a"的学生的老师:   class teacher{   String id;   ...

  5. std&colon;&colon;string 是什么

    #include "stdafx.h" #include <iostream> #include <string> using std::cout; usi ...

  6. 【Spark调优】:尽量避免使用shuffle类算子

    如果有可能的话,尽量避免使用shuffle类算子.因为Spark作业运行过程中,最消耗性能的地方就是shuffle过程.shuffle过程,就是将分布在集群中多个节点上的同一个key,拉取到同一个节点 ...

  7. 【PHP系列】PHP 7&period;0新增特性详解

    开始介绍PHP7.0新特性,具体的可以参照官网的介绍,我来挑一些给大家详细讲解下 http://php.net/manual/en/migration70.new-features.php 1. ?? ...

  8. ES6的新特性(20)—— Module 的加载实现

    Module 的加载实现 上一章介绍了模块的语法,本章介绍如何在浏览器和 Node 之中加载 ES6 模块,以及实际开发中经常遇到的一些问题(比如循环加载). 浏览器加载 传统方法 HTML 网页中, ...

  9. java学习笔记4--对象的初始化与回收

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note4.html,转载请注明源地址. 1.对象初始化和回收 对象初始化 系统在生成对象时,会 ...

  10. C&plus;&plus; 内敛函数

    在主调函数调用函数时,先将现场压入栈以保存现场-转去执行被掉函数-返回主调函数.现场出栈以恢复现场-继续往下执行. 为了减少函数调用的成本,特别是对于小型函数,C++提供了内敛函数(inline).C ...