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. 【初探Spring】------Spring IOC(一)

    IOC:Inversion of Control(控制反转).IOC它所体现的并不是一种技术,而是一种思想,一种将设计好的对象交给容器来管理的思想.IOC的核心思想就体现在控制.反转这两个词上面,要理 ...

  2. python 学习总结

    背景:本文类似文章的目录部分,以系统学习python 新知识和复习总结用 摘要: python 基本语法 numpy库 matplotlib绘图库 pandas库 scikit-learn 机器学习库 ...

  3. 自用的基于Emit的C#下DataTable转实体类方法

    之前一直在做WebForm的开发,数据绑定时直接DataTable绑定Gridview很方便,但是最近开始往MVC转,数据列表的传递和页面展示基本上是以List为主,像下面这样,遍历实体类的各个字段去 ...

  4. 使用注解匹配Spring Aop切点表达式

    Spring中的类基本都会标注解,所以使用注解匹配切点可以满足绝大部分需求 主要使用@within()/@target @annotaton() @args()等... 匹配@Service类中的所有 ...

  5. Android注解使用之ButterKnife 8.0注解使用介绍

    前言: App项目开发大部分时候还是以UI页面为主,这时我们需要调用大量的findViewById以及setOnClickListener等代码,控件的少的时候我们还能接受,控件多起来有时候就会有一种 ...

  6. mysql交互式连接&非交互式连接

    交互式操作:通俗的说,就是你在你的本机上打开mysql的客户端,就是那个黑窗口,在黑窗口下进行各种sql操作,当然走的肯定是tcp协议. 非交互式操作:就是你在你的项目中进行程序调用.比如一边是tom ...

  7. C++程序员如何转Java

     C++程序员如何转Java 忙里偷闲,到了这个时间终于得空写一篇早想写的文章.其实本文的标题有些不太准确,C++程序员写Java代码不是说就非得转行写Java,抛弃C++,而只是多了一个选择而已.两 ...

  8. ThreadLocal<T>的是否有设计问题

    一.吐槽 ThreadLocal<T>明显是.NET从JAVA中来的一个概念,但是这种设计是否出现了问题. 很明显,在JAVA中threadLocal直接是Thread的成员,当然随着th ...

  9. ManualResetEvent知识总结

    一. 用法概述 Manual发音:英[ˈmænjuəl] 直译,手动重置事件 开发者的可以手动对线程间的交互进行手动控制. 二.构造函数 构造函数,如果为 true,则将初始状态设置为终止:如果为 f ...

  10. C#中级-开机自动启动程序

    一.前言 关于C#开机自动启动程序的方法,网上出现比较多的是修改注册表: 1. HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion ...