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 ...
随机推荐
- useful commands for docker beginner
You may want to add my wechat public account or add my technical blog's RSS feed This list is meant ...
- Spark 开发中遇到的一些问题
1.StackOverflowError 问题:简单代码记录 : for (day <- days){ rdd = rdd.union(sc.textFile(/path/to/day) ... ...
- 如何下载Github单个文件(Windows平台)
如何下载Github单个文件(Windows平台) 前提 安装Chrome 浏览器 Chrome浏览器 安装迅雷软件 安装Chrome 迅雷插件 可能商店里迅雷插件有好几种,这里使用这一种 一般使用者 ...
- Android-环境问题
大家都知道 Android Studio 是 Goole 的亲儿子,但,亲儿子毕竟也是刚出生2年不到,身上大毛病没有,小毛病大一堆,这篇博文就来总结一下常见的Android Studio 的设置,使用 ...
- CI Weekly #8 | CI/CD 技能进阶路线
在使用 flow.ci 进行持续集成的过程中,也许你会遇到一些小麻烦.最近我们整理了一些常见问题在 flow.ci 文档之 FAQ,希望对你有用.如果你遇到其他问题,也可以通过「在线消息」或去 Git ...
- 常用js功能函数集合
1.获取随机时间戳 function uniqueId(){ var a=Math.random,b=parseInt; return Number(new Date( ...
- 最全面的百度地图JavaScript离线版开发
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/5822231.html 项目要求web版百度地图要离线开发.这里总结下自己的开发过程和经验. 大概需求是:每辆 ...
- 【知识积累】try-catch-finally+return总结
一.前言 对于找Java相关工作的读者而言,在笔试中肯定免不了遇到try-catch-finally + return的题型,需要面试这清楚返回值,这也是这篇博文产生的由来.本文将从字节码层面来解释为 ...
- 2.JAVA之GUI编程布局
布局管理器 容器中的组件排放方式,就是布局 常见的布局管理器: **************************************************** 1.FlowLayout(流式 ...
- PHP之提取多维数组指定列的方法
前言:有时候在开发中会遇到这样的问题,我们需要把有规律的多维数组按照纵向(列)取出,有下面的方法可用: 我们将拿下面的数组来处理: $arr = array( '0' => array('id' ...