如何使用Python中的Socketserver模块将用户重定向到特定站点?

时间:2019-05-05 01:25:56

标签: python http-redirect tcpserver

在授权抽搐机器人后,我试图将用户发送到重定向站点。如果我不回复请求,它会发出7个请求。

我可以使用self.wfile.write()发送一串数据,然后显示该数据,但是我无法弄清楚如何将完整的重定向发送到客户端,因为socketserver的文档没有解释请求处理程序具有的所有属性。

    ###############################################################################
    # import libraries
    ###############################################################################
    import re
    import socket
    from urllib.request import urlopen
    import json
    from json import loads
    import time
    import requests
    import webbrowser
    import http.server
    import socketserver
    import urllib.parse
    import irc
    import sqlite3 as db
    import datetime
    import random

    ###############################################################################
    #declare  classes
    ###############################################################################
    class MyTCPHandler(socketserver.StreamRequestHandler):
        def handle(self):

            self.data = self.rfile.readline().strip()
            if "favicon" in str(self.data):
                return


            vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
            'THE LINE WHERE I NEED TO REDIRECT THEM'
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^


            print(self.data)
            url = urllib.parse.urlparse(self.data)
            print(url)
            ip = str(self.client_address[0])
            print(ip)
            parse = str(url[4])
            print(parse)
            code = (parse[7:37])
            print(code)
            token = retrieve_token(secret, code)
            print(token)
            datatuple = exchange_token(token)
            print(datatuple)
            username = datatuple[0]
            email = datatuple[1]
            user_pass = "password"
            obsport = 4444
            create_table()
            if len(token) > 0:
                con_entry_discon(username, ip, obsport, user_pass, email)
            time.sleep(0.1)
    ###############################################################################
    #declare Variables

    ###############################################################################
    secret = "&client_secret=asdfasdfasdfasdfasdfasdf"
    Handler = MyTCPHandler
    SERVERPORT = 80


    ###############################################################################
    #Start server
    ###############################################################################
    create_table()
    with socketserver.TCPServer(("localhost", SERVERPORT), Handler) as httpd:
        print("serving at port", SERVERPORT)
        httpd.serve_forever()


    ###############################################################################

    ###############################################################################

我只希望用户重定向到一个网站,而不是像现在这样获得8400万个请求。请原谅我的代码草率,我刚刚在3-4周前开始学习编码。

0 个答案:

没有答案