Atitit.http代理的实现 代码java php c# python
Atitit.http代理的实现 代码java php c# python
1. 代理服务器用途
代理服务器看成是一种扩展浏览器功能的途径。例如,在把数据发送给浏览器之前,可以用代理服务器压缩数据
调试器
数据搜集器
木马病毒
作者:: ★(attilax)>>> 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://www.cnblogs.com/attilax/
package aaa0proxy;
import java.io.*;
import java.net.*;
import log.Log;
import com.attilax.exception.ExUtil;
import com.attilax.json.AtiJson;
import com.attilax.net.SocketUtil;
import com.attilax.web.UrlX;
public class MyHttpProxy extends Thread {
static public int CONNECT_RETRIES = 5; // 尝试与目标主机连接次数
static public int CONNECT_PAUSE = 5; // 每次建立连接的间隔时间
static public int TIMEOUT = 20000; // 每次尝试连接的最大时间
static public boolean logging = false; // 是否记录日志
// 与客户端相连的Socket
protected Socket csocket;
public MyHttpProxy(Socket cs) {
csocket = cs;
start();//run ()
}
public void run() {
String reqHead_firstLine = ""; // 读取请求头
String URL = ""; // 读取请求URL
String host = ""; // 读取目标主机host
int port = 80; // 默认端口80
Socket ssocket = null;
SocketUtil client_SocketUtil=null;
SocketUtil server_SocketUtil_remote = null;
Log logger=new Log();
System.out.println("--log file:"+logger.LOGFILENAME_C );
try {
client_SocketUtil=new SocketUtil(csocket).setSoTimeout(TIMEOUT).setLogger(logger);
UrlX urlUtil=new UrlX();
try {
reqHead_firstLine = client_SocketUtil. readFirstLine().firstLine;
} catch (Exception e) {
System.out.println("---read first line ex,msg:"+e.getMessage());
//、、+ "csocket inso:"+ AtiJson.toJson(csocket) );
ExUtil.throwEx(e);
}
if(reqHead_firstLine.contains(".jpg"))
System.out.println("dbg");
// 抽取URL(<a href="http://www.baidu.com/">http://www.baidu.com/</a>)
//GET http://s.cimg.163.com/catchpic/E/E0/E007CE953D48E9E1EC2319B343B5940D.jpg.670x270.jpg HTTP/1.1
URL = urlUtil.getRequestURL(reqHead_firstLine);
System.out.println("--url:"+URL);
if(URL.contains("1366134690"))
System.out.println("dbg");
host = urlUtil.hostNoport(URL);
port=urlUtil.port(URL);
//s.cimg.163.com
server_SocketUtil_remote=new SocketUtil()
.createConn2remote(host, port, CONNECT_RETRIES,
CONNECT_PAUSE).setSoTimeout(TIMEOUT).setLogger(logger)
.write(reqHead_firstLine+"").write(client_SocketUtil.charFirstLineBreak);
server_SocketUtil_remote.pipe(client_SocketUtil.is, client_SocketUtil.os); // 建立通信管道;
} catch (Exception e) {
e.printStackTrace();
} finally {
new SocketUtil( client_SocketUtil).close();
new SocketUtil( server_SocketUtil_remote) .close();
logger.flush();logger.close();
System.out.println("--thd finish");
}
}
public static void startProxy(int port, Class clobj) {
try {
ServerSocket ssock = new ServerSocket(port); //if port use ,throw ex
/*
* java.net.BindException: Address already in use: JVM_Bind
* */
System.out.println("---start ok port:"+port);
while (true) {
Class[] sarg = new Class[1];
Object[] arg = new Object[1];
sarg[0] = Socket.class;
try {
java.lang.reflect.Constructor cons = clobj
.getDeclaredConstructor(sarg);
arg[0] = ssock.accept();
cons.newInstance(arg); // 创建HttpProxy或其派生类的实例
} catch (Exception e) {
Socket esock = (Socket) arg[0];
try {
esock.close();
} catch (Exception ec) {
}
}
}
} catch (IOException e) {
System.out.println("\nStartProxy Exception:");
e.printStackTrace();
}
}
// 测试用的简单main方法
static public void main(String args[]) throws FileNotFoundException {
System.out.println("在端口808启动代理服务器\n");
//MyHttpProxy.log_S = file_S;
//MyHttpProxy.log_C = file_C;
//MyHttpProxy.logging = true;
MyHttpProxy.startProxy(808, MyHttpProxy.class);
}
}
Atitit.http代理的实现 代码java php c# python的更多相关文章
- Atitit.uml2 api 的编程代码实现设计uml开发 使用eclipse jar java 版本
Atitit.uml2 api 的编程代码实现设计uml开发 使用eclipse jar java 版本 1. clipse提供了UML的底层Java包, 1 2. MDTUML2Getting St ...
- Java JDK 动态代理实现和代码分析
JDK 动态代理 内容 一.动态代理解析 1. 代理模式 2. 为什么要使用动态代理 3. JDK 动态代理简单结构图 4. JDK 动态代理实现步骤 5. JDK 动态代理 API 5.1 java ...
- java 代理模式实现代码
目录 1.静态代理 2.动态代理 1.静态代理 接口类AdminService.java接口 public interface AdminService { void update(); Object ...
- tit.Atitit. http 代理原理 atiHttpProxy 大木马 h
Atitit. http 代理原理 atiHttpProxy 大木马 1. 面这张图可以清晰地阐明HttpProxy的实现原理:1 2. 代理服务器用途1 3. 其中流程具体如下:2 4. 设计规 ...
- Atitit. http 代理原理 atiHttpProxy 大木马
Atitit. http 代理原理 atiHttpProxy 大木马 1. 面这张图可以清晰地阐明HttpProxy的实现原理:1 2. 代理服务器用途1 3. 其中流程具体如下:2 4. 设计规 ...
- atitit..代码生成流程图 流程图绘制解决方案 java c#.net php v2
atitit..代码生成流程图 流程图绘制解决方案 java c#.net php v2 1.1. Markdown 推荐,就是代码和flow都不能直接使用.1 1.2. Java code2fl ...
- atitit.泛型编程总结最佳实践 vO99 java c++ c#.net php
atitit.泛型编程总结最佳实践 vO99 java c++ c#.net php \ 1. 泛型历史 1 由来 1 2. 泛型的机制编辑 1 机制 1 编译机制 2 3. 泛型方法定义1::前定义 ...
- atitit.技术选型方法总结为什么java就是比.net有前途
atitit.技术选型方法总结为什么java就是比.net有前途 #----按照不同的需要有不铜的法... 一般有开发效率,稳定性上的需要.. 作者 老哇的爪子 Attilax 艾龙, EMAIL: ...
- Atitit.jsou html转换纯文本 java c# php
Atitit.jsou html转换纯文本 java c# php 1. 原理<p> <h> <li><div> 等lable转换为回车1 2. 调用2 ...
随机推荐
- ARM的栈指令
ARM的指令系统中关于栈指令的内容比较容易引起迷惑,这是因为准确描述一个栈的特点需要两个参数: 栈地址的增长方向:ARM将向高地址增长的栈称为递增栈(Descendent Stack),将向低地址增长 ...
- ABP源码分析二十一:Feature
Feature是什么?Feature就是对function的分类方法,其与function的关系就比如Role和User的关系一样. ABP中Feature具有以下属性: 其中最重要的属性是name, ...
- ABP框架 - 领域服务
文档目录 本节内容: 简介 例子 创建一个接口 实现服务 使用应用服务 相关论述 为什么不只用应用服务? 如何强制你使用领域服务? 简介 领域服务(或服务)用来执行领域操作和业务规则.Eric Eva ...
- 再次思考 classpath 环境变量 等
f:\aspectj1.8\lib\aspectjrt.jar;.;%JAVA_HOME%\lib;C:\Temp\IBM\SQLLIB\java\db2java.zip;C:\Temp\IBM\SQ ...
- ADO.NET 核心对象简介
ADO.NET是.NET中一组用于和数据源进行交互的面向对象类库,提供了数据访问的高层接口. ADO.NOT类库在System.Data命名空间内,根据我们访问的不同数据库选择命名空间,System. ...
- redis成长之路——(六)
redis配置 为了码农在代码上只关心业务以及代码上的统一性,wenli.drive.redis内部使用配置来完成那些不同的场景,也就是说随便填填配置就能适应不同的场景! 当然配置多了码农也会受不了, ...
- python的print函数的格式化输出
使用print函数的时候,可以像C一样格式化输出,同时还支持参数化输出 print('%s' % ("CooMark")) print('整数|%d|' % (123)) prin ...
- Bootstrap3插件系列:bootstrap-select2
1.下载插件 https://github.com/select2/select2 http://select2.github.io/ 2.引用插件 <script src="~/Sc ...
- 推荐几款jquery图片切换插件
一.前言 毕业季到了,大家都在匆匆忙忙的记录大学里最美好的时光,照片中各种花式.各种姿势都涌现出来了.这么多的照片怎么展示出来给自己的好友看呢?有人选择做成视频,有人选择ps之后做成图片集,而我选择利 ...
- jQuery对象和DOM对象的区别
jQuery对象和DOM对象使用说明,需要的朋友可以参考下.1.jQuery对象和DOM对象第一次学习jQuery,经常分辨不清哪些是jQuery对象,哪些是 DOM对象,因此需要重点了解jQuery ...