当前位置:  开发笔记 > 编程语言 > 正文

如何将请求转发到python中的其他URL

如何解决《如何将请求转发到python中的其他URL》经验,为你挑选了3个好方法。

我一直在寻找将特殊URL重定向到远程服务器以进行一些XSS测试的语法.有任何想法吗?

import SimpleHTTPServer
import SocketServer

class myHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
    def do_GET(self):
        print self.path 
        if self.path == '/analog':
-------------------->return "http://12b.dk/analog"???
        return SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)

theport = 1234
Handler = myHandler
pywebserver = SocketServer.TCPServer(("", theport), Handler)

print "Python based web server. Serving at port", theport
pywebserver.serve_forever()

Dan Andreatt.. 21

对于重定向,您必须返回代码301和Location标题.可能你会尝试类似的东西:

class myHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
   def do_GET(self):
       self.send_response(301)
       self.send_header('Location','http://www.example.com')
       self.end_headers()


Cody.. 8

这是一个完整的代码重定向,保存此文件并将其作为python程序运行.终止,ctrl + c.

import SimpleHTTPServer
import SocketServer
class myHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
   def do_GET(self):
       print self.path
       self.send_response(301)
       new_path = '%s%s'%('http://newserver.com', self.path)
       self.send_header('Location', new_path)
       self.end_headers()

PORT = 8000
handler = SocketServer.TCPServer(("", PORT), myHandler)
print "serving at port 8000"
handler.serve_forever()


Bruno Bronos.. 7

Python 3

python3它做得非常类似于其他的答案,但足以证明显示不同。

这是一个脚本,除了监听作为参数1传递的端口并发送302(“ Found”,也称为Temporary)重定向到作为参数2传递的URL之外,什么都不做。(并且有一条用法消息。)

#!/usr/bin/env python3

import sys
from http.server import HTTPServer, BaseHTTPRequestHandler

if len(sys.argv)-1 != 2:
    print("""
Usage: {}  
    """.format(sys.argv[0]))
    sys.exit()

class Redirect(BaseHTTPRequestHandler):
   def do_GET(self):
       self.send_response(302)
       self.send_header('Location', sys.argv[2])
       self.end_headers()

HTTPServer(("", int(sys.argv[1])), Redirect).serve_forever()

您这样称呼它:

sudo ./redirect.py 80 http://jenkins.example.com:8080/

该示例应该给您足够的编写所需的功能的信息。



1> Dan Andreatt..:

对于重定向,您必须返回代码301和Location标题.可能你会尝试类似的东西:

class myHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
   def do_GET(self):
       self.send_response(301)
       self.send_header('Location','http://www.example.com')
       self.end_headers()



2> Cody..:

这是一个完整的代码重定向,保存此文件并将其作为python程序运行.终止,ctrl + c.

import SimpleHTTPServer
import SocketServer
class myHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
   def do_GET(self):
       print self.path
       self.send_response(301)
       new_path = '%s%s'%('http://newserver.com', self.path)
       self.send_header('Location', new_path)
       self.end_headers()

PORT = 8000
handler = SocketServer.TCPServer(("", PORT), myHandler)
print "serving at port 8000"
handler.serve_forever()



3> Bruno Bronos..:
Python 3

python3它做得非常类似于其他的答案,但足以证明显示不同。

这是一个脚本,除了监听作为参数1传递的端口并发送302(“ Found”,也称为Temporary)重定向到作为参数2传递的URL之外,什么都不做。(并且有一条用法消息。)

#!/usr/bin/env python3

import sys
from http.server import HTTPServer, BaseHTTPRequestHandler

if len(sys.argv)-1 != 2:
    print("""
Usage: {}  
    """.format(sys.argv[0]))
    sys.exit()

class Redirect(BaseHTTPRequestHandler):
   def do_GET(self):
       self.send_response(302)
       self.send_header('Location', sys.argv[2])
       self.end_headers()

HTTPServer(("", int(sys.argv[1])), Redirect).serve_forever()

您这样称呼它:

sudo ./redirect.py 80 http://jenkins.example.com:8080/

该示例应该给您足够的编写所需的功能的信息。

推荐阅读
ERIK又
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有