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 ...
随机推荐
- Livecoding.tv 现正举行iOS及Android App设计比赛
近日,Livecoding.tv, 一个为世界各地的程序员提供在线实时交流的平台,在其网站上发布了一篇通知, 宣布从4月15日至5月15日,会为iOS和Android的开发者举办一场本地移动app设计 ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统--任务调度系统解析
1.任务主界面.任务可以被挂起,启动,和删除.来自著名Quartz扩展 2.任务可以是执行的SQL命令,存储过程,或者是一个后台方法 3.极其复杂的调度任务,循环次数,可以自行设置.并可以间隔执行,比 ...
- 【NLP】条件随机场知识扩展延伸(五)
条件随机场知识扩展延伸 作者:白宁超 2016年8月3日19:47:55 [摘要]:条件随机场用于序列标注,数据分割等自然语言处理中,表现出很好的效果.在中文分词.中文人名识别和歧义消解等任务中都有应 ...
- Docker容器环境下ASP.NET Core Web API应用程序的调试
本文主要介绍通过Visual Studio 2015 Tools for Docker – Preview插件,在Docker容器环境下,对ASP.NET Core Web API应用程序进行调试.在 ...
- div+css3绘制基本图形
基本图形包括:矩形.圆角矩形.圆形.椭圆形.三角形.值线.弧 这些图形的绘制用到了CSS圆角属性,不考虑IE8. 下面的实现在chrome浏览器运行通过. 1.矩形 比较简单,通过CSS设置宽度.高度 ...
- 为Guid数据类型的属性(property)赋值
先来看看数据库表中的字段设计: 在数据库的数据类型为uniqueidentifier. 而在程序中对应的数据类型为GUID. property有get和set,也就是说能获取值也可以赋值.
- 使用图片视频展示插件blueimp Gallery改造网站的视频图片展示
在很多情况下,我们网站可能会展示我们的产品图片.以及教程视频等内容,结合一个比较好的图片.视频展示插件,能够使得我们的站点更加方便使用,也更加酷炫,在Github上有很多相关的处理插件可以找来使用,有 ...
- 【转】Django Model field reference学习总结
Django Model field reference学习总结(一) 本文档包含所有字段选项(field options)的内部细节和Django已经提供的field types. Field 选项 ...
- python学习笔记(基础三:if else流程判断、while循环、for循环)
if else流程判断 getpass在pycharm中无法使用,在命令行窗口中进入python环境可以使用. import getpassusername = input("usernam ...
- python之最强王者(7)——元组(tuple)
1.序列(sequence): 说明:在前面的字符串列表中其实我们已经用到了序列,之所以放到这篇来讲主要是为了承上启下,方便理解和记忆. python的数据访问模型:直接存取 ,序列 ,映射 对非容器 ...