Atitit.http代理的实现 代码java php c# python

1. 代理服务器用途

代理服务器看成是一种扩展浏览器功能的途径。例如,在把数据发送给浏览器之前,可以用代理服务器压缩数据

调试器

数据搜集器

木马病毒

作者::  ★(attilax)>>>   绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙,  EMAIL:[email protected]

转载请注明来源: 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);

}

}

时间: 2025-01-16 12:23:39

Atitit.http代理的实现 代码java php c# python的相关文章

tit.Atitit. http 代理原理 &#160;atiHttpProxy &#160;大木马 h

Atitit. http 代理原理  atiHttpProxy  大木马 1. 面这张图可以清晰地阐明HttpProxy的实现原理:1 2. 代理服务器用途1 3. 其中流程具体如下:2 4. 设计规划3 5. 结束语4 1. 面这张图可以清晰地阐明HttpProxy的实现原理:  2. 代理服务器用途 代理服务器看成是一种扩展浏览器功能的途径.例如,在把数据发送给浏览器之前,可以用代理服务器压缩数据 调试器 数据搜集器 木马病毒 3. 其中流程具体如下: 1.客户端通过浏览器向代理服务器发送H

Atitit. http 代理原理 &#160;atiHttpProxy &#160;大木马

Atitit. http 代理原理  atiHttpProxy  大木马 1. 面这张图可以清晰地阐明HttpProxy的实现原理:1 2. 代理服务器用途1 3. 其中流程具体如下:2 4. 设计规划3 5. 结束语4 1. 面这张图可以清晰地阐明HttpProxy的实现原理:  2. 代理服务器用途 代理服务器看成是一种扩展浏览器功能的途径.例如,在把数据发送给浏览器之前,可以用代理服务器压缩数据 调试器 数据搜集器 木马病毒 3. 其中流程具体如下: 1.客户端通过浏览器向代理服务器发送H

atitit.技术选型方法总结为什么java就是比.net有前途

#----按照不同的需要有不铜的法... 一般有开发效率,稳定性上的需要.. 作者 老哇的爪子 Attilax 艾龙,  EMAIL:[email protected] 转载请注明来源: http://blog.csdn.net/attilax #-----常规选型..一般还是java+php比较好.. 长期性:把需要都罗列出来,然后把那些在长期还用得到的标出来. 一般来说.console是最稳定性的...前端gui/web是不稳定性的...后端就是更好.. 查看历史:: 会晓得,为什么php会

Atitit.js javascript异常处理机制与java异常的转换.js exception process Voae

Atitit.js javascript异常处理机制与java异常的转换.js exception processVoae 1. 1. javascript异常处理机制 1 2. 2. Web前后台异常的统一处理 1 3.  java异常转换为js异常 1 3. -------------详细代码 2 1. 1. javascript异常处理机制 Throw str Not throw error  ..cause ie,ff error obj is diff.. 2. 2. Web前后台异常

atitit..代码生成流程图 流程图绘制解决方案 java &#160;c#.net &#160;php v2

atitit..代码生成流程图 流程图绘制解决方案 java  c#.net  php v2 1.1. Markdown 推荐,就是代码和flow都不能直接使用.1 1.2. Java code2flow 推荐,最起码代码能用,flow能看1 2. visus1211 3. 别的工具cvf 跟autoflowchart2 3.1. Code Visual 代码编辑器(code visual to flowchart v6.0) 推荐3 3.2. Axure不推荐,二进制的4 4. 参考4 1.1

atitit.泛型编程总结最佳实践 vO99 java c++ c#.net php

atitit.泛型编程总结最佳实践 vO99 java c++ c#.net php \ 1. 泛型历史 1 由来 1 2. 泛型的机制编辑 1 机制 1 编译机制 2 3. 泛型方法定义1::前定义 2 4. 泛型方法定义2::后定义,方法也需要加<T>标签... 2 5. 调用泛型方法::: cls.<String>meth(); 2 6.  //反回值为范型 2 7. 参考 3 1. 泛型历史 泛型编程(Generic Programming)最初提出时的动机很简单直接:发明

Atitit.异步编程 java .net php python js 的比较

Atitit.异步编程 java .net php python js 的比较 1. 1.异步任务,异步模式,  APM模式,,  EAP模式, TAP 1 1.1.       APM模式: BeginXXX/EndXXX, IAsyncResult 2 1.2.       EAP模式(基于事件的异步模式) 2 1.3.      TAP(基于任务的异步模式) 2 2. 异步的实现机制::主要是通过线程and线程池实现的... 2 3. 异步编程的开发::当前都是通过api的,将来应该可以使

Atitit.HTTP&#160;代理原理及实现&#160;正向代理与反向代理attilax总结

Atitit.HTTP 代理原理及实现 正向代理与反向代理attilax总结 1. 普通代理1 1.1.1. 普通代理2 2. 隧道代理3 3. 反向代理 4 4. 正向代理也可以使用apache实现4 5. 参考5 HTTP 代理原理及实现(一) 文章目录 1. 普通代理 Web 代理是一种存在于网络中间的实体,提供各式各样的功能.现代网络系统中,Web 代理无处不在.我之前有关 HTTP 的博文中,多次提到了代理对 HTTP 请求及响应的影响.今天这篇文章,我打算谈谈 HTTP 代理本身的一

IOS中在自定义控件(非视图控制器)的视图跳转中 代理方法与代码块的比较

//代码块与代替代理的设计方法 我就以在自定义视图中(非视图控制器,不能实现视图控制功能),通过代理和代码块两种方法分别实现视图的跳转,进行对比 首先自定义了一个视图,上面有一个已经注册了得BUtton点击监控事件方法-(void)event{};视图的跳转就在这个方法中实现(注意:这个button不在视图控制器里面,就算导了相关头文件,也不能跳转,所以只能通过代理方法,或者代码块等,在这个button(在自定义控件空,非视图控制器)方法中调用相关方法,在视图控制器中去实现) 代理实现方法: 在