Как я могу перенаправить пользователя на конкретный сайт с помощью модуля Socketserver в Python? - PullRequest
0 голосов
/ 05 мая 2019

Я пытаюсь отправить пользователя на перенаправленный сайт после авторизации дергающегося бота.Если я не отвечаю на запрос, он выполняет примерно 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()


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

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

Я просто хочу, чтобы пользователь перенаправлялся на веб-сайт вместо получения 84миллион запросов, как я делаю сейчас.Пожалуйста, простите за неряшливость моего кода, я только начал учиться кодировать, как 3-4 недели назад.

...