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. (译)你应该知道的jQuery技巧

    帮助提高你jQuery应用的简单小技巧. 回到顶部按钮 图片预加载 判断图片是否加载完 自动修补破损图像 Hover切换class类 禁用输入 停止正在加载的链接 toggle fade/slide ...

  2. ABP源码分析三十:ABP.RedisCache

    ABP 通过StackExchange.Redis类库来操作Redis数据库. AbpRedisCacheModule:完成ABP.RedisCache模块的初始化(完成常规的依赖注入) AbpRed ...

  3. JavaScript dom 标签属性

    节点: 平时开发中常用的节点是: 元素节点:nodeType值是 1    --> <a>,<p>...... 属性节点:nodeType值是 2    --> t ...

  4. 游戏服务器菜鸟之C#初探四游戏服务

    经过多次折腾之后,在一次进行了一次重大的重构,去解决问题 主要重构如下 1.将原来的单一协议修改多协议进行,一些查询.认证的功能都采用HTTP进行,避免全部采用TCP链接资源的消耗: 2.原来单一的部 ...

  5. JavaScript随笔6

    Ajax:(1) 阻止缓存?+t = new data(); eval可以把string变为数组(2) get:放入URL username = &password = ; 容量有小 安全性差 ...

  6. 05. Web大前端时代之:HTML5+CSS3入门系列~H5 多媒体系

    Web大前端时代之:HTML5+CSS3入门系列:http://www.cnblogs.com/dunitian/p/5121725.html 1.引入 概述 音频文件或视频文件都可以看做是一个容器文 ...

  7. 【译】Unity3D Shader 新手教程(6/6) —— 更好的卡通Shader

    本文为翻译,附上原文链接. 转载请注明出处--polobymulberry-博客园. 动机 如果你想了解以下几件事,我建议你阅读以下这篇教程: 想知道如何写一个multipass的toon shade ...

  8. MVC5 网站开发之七 用户功能 2 用户添加和浏览

    目录 MVC5网站开发之一 总体概述 MVC5 网站开发之二 创建项目 MVC5 网站开发之三 数据存储层功能实现 MVC5 网站开发之四 业务逻辑层的架构和基本功能 MVC5 网站开发之五 展示层架 ...

  9. ASP.NET MVC5+EF6+EasyUI 后台管理系统(60)-系统总结

    系列目录 前言: 起初写这个框架的时候,可以说在当时来说并不是很流行的设计模式,那是在2012年,面向对象的编程大家都很熟悉, 但是“注入.控制反转(DI,IOC,依赖注入).AOP切面编程”新兴名词 ...

  10. Linux平台 Oracle 11gR2 RAC安装Part3:DB安装

    四.DB(Database)安装 4.1 解压DB的安装包 4.2 DB软件安装 4.3 ASMCA创建磁盘组 4.4 DBCA建库 4.5 验证crsctl的状态 Linux平台 Oracle 11 ...