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的更多相关文章

  1. Atitit.uml2 api 的编程代码实现设计uml开发 使用eclipse jar java 版本

    Atitit.uml2 api 的编程代码实现设计uml开发 使用eclipse jar java 版本 1. clipse提供了UML的底层Java包, 1 2. MDTUML2Getting St ...

  2. Java JDK 动态代理实现和代码分析

    JDK 动态代理 内容 一.动态代理解析 1. 代理模式 2. 为什么要使用动态代理 3. JDK 动态代理简单结构图 4. JDK 动态代理实现步骤 5. JDK 动态代理 API 5.1 java ...

  3. java 代理模式实现代码

    目录 1.静态代理 2.动态代理 1.静态代理 接口类AdminService.java接口 public interface AdminService { void update(); Object ...

  4. tit.Atitit. http 代理原理  atiHttpProxy  大木马 h

    Atitit. http 代理原理  atiHttpProxy  大木马 1. 面这张图可以清晰地阐明HttpProxy的实现原理:1 2. 代理服务器用途1 3. 其中流程具体如下:2 4. 设计规 ...

  5. Atitit. http 代理原理  atiHttpProxy  大木马

    Atitit. http 代理原理  atiHttpProxy  大木马 1. 面这张图可以清晰地阐明HttpProxy的实现原理:1 2. 代理服务器用途1 3. 其中流程具体如下:2 4. 设计规 ...

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

    atitit..代码生成流程图 流程图绘制解决方案 java  c#.net  php v2 1.1. Markdown 推荐,就是代码和flow都不能直接使用.1 1.2. Java code2fl ...

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

    atitit.泛型编程总结最佳实践 vO99 java c++ c#.net php \ 1. 泛型历史 1 由来 1 2. 泛型的机制编辑 1 机制 1 编译机制 2 3. 泛型方法定义1::前定义 ...

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

    atitit.技术选型方法总结为什么java就是比.net有前途 #----按照不同的需要有不铜的法... 一般有开发效率,稳定性上的需要.. 作者 老哇的爪子 Attilax 艾龙,  EMAIL: ...

  9. Atitit.jsou html转换纯文本 java c# php

    Atitit.jsou html转换纯文本 java c# php 1. 原理<p> <h> <li><div> 等lable转换为回车1 2. 调用2 ...

随机推荐

  1. ARM的栈指令

    ARM的指令系统中关于栈指令的内容比较容易引起迷惑,这是因为准确描述一个栈的特点需要两个参数: 栈地址的增长方向:ARM将向高地址增长的栈称为递增栈(Descendent Stack),将向低地址增长 ...

  2. ABP源码分析二十一:Feature

    Feature是什么?Feature就是对function的分类方法,其与function的关系就比如Role和User的关系一样. ABP中Feature具有以下属性: 其中最重要的属性是name, ...

  3. ABP框架 - 领域服务

    文档目录 本节内容: 简介 例子 创建一个接口 实现服务 使用应用服务 相关论述 为什么不只用应用服务? 如何强制你使用领域服务? 简介 领域服务(或服务)用来执行领域操作和业务规则.Eric Eva ...

  4. 再次思考 classpath 环境变量 等

    f:\aspectj1.8\lib\aspectjrt.jar;.;%JAVA_HOME%\lib;C:\Temp\IBM\SQLLIB\java\db2java.zip;C:\Temp\IBM\SQ ...

  5. ADO.NET 核心对象简介

    ADO.NET是.NET中一组用于和数据源进行交互的面向对象类库,提供了数据访问的高层接口. ADO.NOT类库在System.Data命名空间内,根据我们访问的不同数据库选择命名空间,System. ...

  6. redis成长之路——(六)

    redis配置 为了码农在代码上只关心业务以及代码上的统一性,wenli.drive.redis内部使用配置来完成那些不同的场景,也就是说随便填填配置就能适应不同的场景! 当然配置多了码农也会受不了, ...

  7. python的print函数的格式化输出

    使用print函数的时候,可以像C一样格式化输出,同时还支持参数化输出 print('%s' % ("CooMark")) print('整数|%d|' % (123)) prin ...

  8. Bootstrap3插件系列:bootstrap-select2

    1.下载插件 https://github.com/select2/select2 http://select2.github.io/ 2.引用插件 <script src="~/Sc ...

  9. 推荐几款jquery图片切换插件

    一.前言 毕业季到了,大家都在匆匆忙忙的记录大学里最美好的时光,照片中各种花式.各种姿势都涌现出来了.这么多的照片怎么展示出来给自己的好友看呢?有人选择做成视频,有人选择ps之后做成图片集,而我选择利 ...

  10. jQuery对象和DOM对象的区别

    jQuery对象和DOM对象使用说明,需要的朋友可以参考下.1.jQuery对象和DOM对象第一次学习jQuery,经常分辨不清哪些是jQuery对象,哪些是 DOM对象,因此需要重点了解jQuery ...