在python中,如何将请求重定向到不同的url

2024-04-27 18:19:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在寻找将一个特殊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()

Tags: pathimportselfgetreturndohandlerprint
3条回答

对于重定向,您必须返回一个代码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()

Python 3

python3中,它与其他答案非常相似,但不同程度足以证明演示的合理性

这是一个脚本,它只监听作为参数1传递的端口,并向作为参数2传递的URL发送302(“find”aka Temporary)重定向。(它有一条用法信息。)

#!/usr/bin/env python3

import sys
from http.server import HTTPServer, BaseHTTPRequestHandler

if len(sys.argv)-1 != 2:
    print("""
Usage: {} <port_number> <url>
    """.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/

这个例子应该给你足够的时间来编写你需要的函数

这是一段完整的代码,用于重定向、保存此文件并将其作为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()

相关问题 更多 >