首页 > 其他分享 >HTTP Proxy Demo 代码示例

HTTP Proxy Demo 代码示例

时间:2023-06-14 09:14:04浏览次数:35  
标签:HTTP socket 示例 Demo server client 主机 data 客户端

以下是一个简单的 HTTP Proxy Demo 代码,使用 Python 3 编写:

 

```python

import socket

 

def handle_request(client_socket):

# 接收客户端请求

request_data = client_socket.recv(1024)

print(request_data.decode())

 

# 解析请求,获取目标主机和端口号

first_line = request_data.decode().split('\n')[0]

url = first_line.split(' ')[1]

host = url.split(':')[0]

port = int(url.split(':')[1])

 

# 创建一个新的 socket,连接目标主机和端口号

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

server_socket.connect((host, port))

 

# 将客户端请求发送给目标主机

server_socket.send(request_data)

 

# 接收目标主机的响应

response_data = server_socket.recv(1024)

print(response_data.decode())

 

# 将目标主机的响应发送给客户端

client_socket.send(response_data)

 

# 关闭连接

client_socket.close()

server_socket.close()

 

def main():

# 创建一个 socket,绑定到本地端口号

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

server_socket.bind(('localhost', 8000))

 

# 开始监听连接

server_socket.listen(1)

print('Proxy server is listening on port 8000...')

 

while True:

# 接受客户端连接

client_socket, client_address = server_socket.accept()

print('Received connection from:', client_address)

 

# 处理客户端请求

handle_request(client_socket)

 

if __name__ == '__main__':

main()

```

 

这个 Demo 实现了一个简单的 HTTP Proxy,它监听本地的 8000 端口,当有客户端连接时,它会解析客户端的请求,获取目标主机和端口号,然后创建一个新的 socket,连接目标主机和端口号,将客户端请求发送给目标主机,接收目标主机的响应,然后将响应发送给客户端。

#! -*- encoding:utf-8 -*-

    import requests

    # 要访问的目标页面
    targetUrl = "http://ip.hahado.cn/ip"

    # 代理服务器
    proxyHost = "ip.hahado.cn"
    proxyPort = "39010"

    # 代理隧道验证信息
    proxyUser = "username"
    proxyPass = "password"

    proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {
        "host" : proxyHost,
        "port" : proxyPort,
        "user" : proxyUser,
        "pass" : proxyPass,
    }

    proxies = {
        "http"  : proxyMeta,
        "https" : proxyMeta,
    }

    resp = requests.get(targetUrl, proxies=proxies)

    print resp.status_code
    print resp.text

标签:HTTP,socket,示例,Demo,server,client,主机,data,客户端
From: https://www.cnblogs.com/huakeyun/p/17479177.html

相关文章

  • Annotation_demo
    参考:https://zhuanlan.zhihu.com/p/60730622CheckAge.javapackagecom.hmb;importjava.lang.annotation.ElementType;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;importjava.lang.annotation.Target;@Target(ElementType......
  • React Native In Action中的demo的运行
     我用了最新的xcode和新的reactnative。Chapter6: Navigation这一章中的事例跑不起来,应该是程序用了就的版本的reactnavigation("react-navigation":"^2.0.1"),同时关于Navigation的用法也做了不小的改动,因此需要重新看相关文档改写。参考:https://reactnavigation.org/docs......
  • 使用nginx搭建https服务器
    最近在研究nginx,整好遇到一个需求就是希望服务器与客户端之间传输内容是加密的,防止中间监听泄露信息,但是去证书服务商那边申请证书又不合算,因为访问服务器的都是内部人士,所以自己给自己颁发证书,忽略掉浏览器的不信任警报即可。下面是颁发证书和配置过程。首先确保机器上安装了op......
  • java 代理(静态代理、动态代理的不同实现)详解及示例
    (文章目录)本文简单的介绍了java的代理概念,针对静态和动态代理的不同定义与实现方式,并给出了详细的示例,最后给出一个综合的应用,展示动态代理的使用。一、代理构成1、代理介绍代理模式上,基本上有Subject角色,RealSubject角色,Proxy角色。Subject角色负责定义RealSubject和Proxy......
  • Apache Http Server 路径穿越漏洞复现(CVE-2021-41773)
    ApacheHttpServer路径穿越漏洞复现ApacheHttpServer路径穿越漏洞概述ApacheHttpServer简介ApacheHTTPServer(简称Apache)是Apache软件基金会的一个开放源码的网页服务器软件,可以在大多数电脑操作系统中运行。由于其跨平台和安全性,被广泛使用,是最流行的Web服务器......
  • Visual Studio Feature: .http Files
    ExploringtheNewVisualStudioFeature:.httpFiles#visualstudio#csharp#dotnet#abotwrotethisIntroduction:VisualStudio,thepopularintegrateddevelopmentenvironment(IDE)byMicrosoft,continuallyevolvestoenhancedevelopers'productivity......
  • Angular中的HTTP请求】- 拦截器 HttpInterceptor 详解
    原文: 【Angular中的HTTP请求】-拦截器HttpInterceptor详解__老杨_的博客-CSDN博客通过学习HttpClient的工作机制,我们知道对于HTTP请求,HttpClient实际上是构建了一个链式的处理流程: 在HttpBackend的处理流程中请求被发出。在HttpBackend的前面可以设置多个的拦截器,对请......
  • 选择http代理IP需要考虑哪些因素
    对于爬虫工作者来说,选择合适的代理IP是很重要的一项工作,正所谓“工欲善其事必先利其器”。那么选择http代理IP需要考虑哪些因素呢?1、价格很多人选择代理IP首先看重的就是价格,货比三家也只比价格,不可否认,价格确实很重要。毕竟公司是有预算限制的,但需要在质量相差不多的情况下,选择价......
  • ABAP 调用HTTP上传附件(二)之中文乱码
    1、这篇文章的由来之前已经发表了《ABAP调用HTTP上传附件》的文章,详细介绍了如何通过HTTP请求传输附件,可点击链接参考原有文档因为之前对传输文件的中文文件名处理上解释不够详细,也因为不够重视,导致又一次在相关问题上踩坑。而浪费一天时间的问题,最终原因竟然就是个这?哭笑不得!目瞪......
  • Condition类_demo
    参考:https://blog.csdn.net/u014082714/article/details/83927697https://blog.csdn.net/a1439775520/article/details/98471610Resource.javapackagecom.hmb;importjava.util.PriorityQueue;importjava.util.concurrent.locks.Condition;importjava.util.concurr......