热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

pythonredirect重定向https_Python简单的HTTPS转发器

下面是我用于重定向端口8080上的常规HTTP请求的简单脚本,它会根据源IP地址立即重定向(至少使它们重定向).它适用于(对于HTTP),但是我希望通过443端口的HTTPS请求具

下面是我用于重定向端口8080上的常规HTTP请求的简单脚本,它会根据源IP地址立即重定向(至少使它们重定向).

它适用于(对于HTTP),但是我希望通过443端口的HTTPS请求具有相同的行为.假设如果不存在重定向,则到此简单服务器的传入客户端将能够与通过自签名证书重定向到的目标握手.

import SimpleHTTPServer

import SocketServer

LISTEN_PORT = 8080

source = "127.0.0.1"

target = "http://target/"

class simpleHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):

def do_POST(self):

clientAddressString = ''.join(str(self.clientAddress))

if source in clientAddressString:

# redirect incoming request

self.send_response(301)

new_path = '%s%s' % (target, self.path)

self.send_header('Location', new_path)

self.end_headers()

handler = SocketServer.TCPServer(("", LISTEN_PORT), simpleHandler)

handler.serve_forever()

我可以使用自签名证书,并可以访问通常用于此连接的文件“ server.crt”和“ server.key”(无需中间重定向的python服务器).我不确定在这样之间放置重定向时会发生什么,尽管我认为它必须是握手链的一部分.

我该如何实现这种行为?

除了新的目标和请求标头中的响应代码之外,我还需要修改什么吗?

解决方法:

我将答案分为网络和Python部分.

在网络方面,您无法在SSL层进行重定向-因此,您需要一个完整的HTTPs服务器,并在SSL握手完成后重定向GET / POST请求.对于HTTP和HTTP,响应代码以及实际的do_POST或do_GET实现将完全相同.

附带说明,重定向POST不会遇到任何问题?当您在POST上执行301时,浏览器不会将POST数据重新发送到新目标,因此在应用程序级别可能会中断.

在Python方面,您可以通过包装套接字将HTTP服务器扩展为HTTP服务器:

import BaseHTTPServer, SimpleHTTPServer

import ssl

handler = BaseHTTPServer.HTTPServer(("", LISTEN_PORT), simpleHandler)

handler.socket = ssl.wrap_socket (handler.socket, certfile='path/to/combined/PKCS12/container', server_side=True)

handler.serve_forever()

希望这可以帮助.

标签:socketserver,ssl,https,simplehttpserver,python



推荐阅读
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • Spring Boot 中配置全局文件上传路径并实现文件上传功能
    本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ... [详细]
  • vue引入echarts地图的四种方式
    一、vue中引入echart1、安装echarts:npminstallecharts--save2、在main.js文件中引入echarts实例:  Vue.prototype.$echartsecharts3、在需要用到echart图形的vue文件中引入:   importechartsfrom"echarts";4、如果用到map(地图),还 ... [详细]
  • iOS snow animation
    CTSnowAnimationView.hCTMyCtripCreatedbyalexon1614.Copyright©2016年ctrip.Allrightsreserved.# ... [详细]
  • 本文介绍了如何使用Python爬取妙笔阁小说网仙侠系列中所有小说的信息,并将其保存为TXT和CSV格式。主要内容包括如何构造请求头以避免被网站封禁,以及如何利用XPath解析HTML并提取所需信息。 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 本文详细解析了ASP.NET 2.0中的Callback机制,不仅介绍了基本的使用方法,还深入探讨了其背后的实现原理。通过对比Atlas框架,帮助读者更好地理解和应用这一机制。 ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • MicrosoftDeploymentToolkit2010部署培训实验手册V1.0目录实验环境说明3实验环境虚拟机使用信息3注意:4实验手册正文说 ... [详细]
  • 原文网址:https:www.cnblogs.comysoceanp7476379.html目录1、AOP什么?2、需求3、解决办法1:使用静态代理4 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • 【实例简介】本文详细介绍了如何在PHP中实现微信支付的退款功能,并提供了订单创建类的完整代码及调用示例。在配置过程中,需确保正确设置相关参数,特别是证书路径应根据项目实际情况进行调整。为了保证系统的安全性,存放证书的目录需要设置为可读权限。值得注意的是,普通支付操作无需证书,但在执行退款操作时必须提供证书。此外,本文还对常见的错误处理和调试技巧进行了说明,帮助开发者快速定位和解决问题。 ... [详细]
  • Python 序列图分割与可视化编程入门教程
    本文介绍了如何使用 Python 进行序列图的快速分割与可视化。通过一个实际案例,详细展示了从需求分析到代码实现的全过程。具体包括如何读取序列图数据、应用分割算法以及利用可视化库生成直观的图表,帮助非编程背景的用户也能轻松上手。 ... [详细]
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
author-avatar
曹月洪_867
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有