将所有请求指向localhost

时间:2014-12-31 12:50:20

标签: python sockets dns

我正在使用python开发一个小型的强制网络门户。我想将用户重定向到我创建的本地服务器上的自定义页面。我的问题是,如何解析用户输入localhost或127.0.0.1的所有网站(例如:google.com)。我见过像localtest.me这样的网站和fuf.me指向我的本地服务器。怎么做?我的猜测是拦截所有DNS请求并将它们指向我的自定义服务器....

这是我目前为dns请求提供的内容。

import socket
import sys

host = ''
port = socket.getservbyname('domain') #get dns port dynamically

udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # udp socket
udp_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)

print 'udp socket created...'

try:
    udp_socket.bind((host,port))
    print 'bind successful'
except socket.error as msg:
    print msg
    sys.exit()

while True:
    data,addr = udp_socket.recvfrom(1024)
    if data:
        print data,addr
    else: break

udp_socket.close()

从客户端显示服务器上的所有DNS请求...现在如何重定向到我的localhost

忘记提及我正在使用Windows ...

1 个答案:

答案 0 :(得分:0)

您的方法可能有效,但根据您的实际要求,可能效率不高。更自然的方法是在主机上使用iptables捕获未识别的HTTP流量并将其发送回本地Web服务器。

使用PHP查看此网站以获取配方。使用python修改它应该不会太难。 http://www.andybev.com/index.php/Using_iptables_and_PHP_to_create_a_captive_portal