2011-06-09 33 views
1

有沒有辦法提高腳本驗證速度?或者還有另一種(不是sw)解決方案?如何在Python中更快地驗證域?

我想是這樣的(但其緩慢的和無用的):

import urllib 
from socket import * 
import string, re 

strings = string.ascii_lowercase 
digits = string.digits 

def validate(url): 
    try: 
     targetIP = gethostbyname(url) 
     print url,' - Registered - ', targetIP 
    except: 
     print url," - Free" 

def generate(url): 

    for x in strings:  
     url_mod = "www."+ x + url 
     validate(url_mod) 

generate("atrion.com") 
+3

我不認爲獲取主機名會起作用。有時候域名可能會被godaddy註冊,或者在註冊該域名的人沒有更新後註冊 – Pwnna 2011-06-09 13:29:17

+0

當然,我知道這一點。我已經編寫了另一個函數,通過一些whois服務器從函數validate()中檢查免費域。 – Stanyko 2011-06-09 14:20:30

回答

1

你的速度問題來自查找的DNS域名,而不是從Python的。

我會嘗試配置我的系統使用不同的DNS服務器,如Google Public DNS。請注意,這是一個系統級配置,而不是Python配置。您可以在該頁面上找到指向配置說明的鏈接。

另請注意,如果您正在製作此類查詢的lot,則Google可能會將其解釋爲拒絕服務攻擊並將其切斷。只是FYI。

+0

谷歌DNS也很慢,但我試過openDNS服務器,這是完美的作品。感謝您的建議。 – Stanyko 2011-06-09 15:50:59

1

由於您的程序通常會等待網絡活動,您可以通過線程化程序來加快速度。

話雖如此,如果你能以另一種方式做到這一點,那可能是可取的。 你真的想解決什麼問題? 你只是想根據你提供的例子找出哪些域名是免費的,或者你有什麼其他的東西?

+0

你的想法聽起來很有趣,希望我能夠用這種方式編碼。我提供的例子僅用於演示。我試圖編寫一個簡單的域檢查器。代碼首先檢查域的存在,然後檢查是否已註冊。 – Stanyko 2011-06-09 14:28:29