どのPythonの方法が提案するかを確認whoisデータベースに記録を照査していますか。

StackOverflow https://stackoverflow.com/questions/50394

  •  09-06-2019
  •  | 
  •  

質問

いることができるよう索し、トレーニングで実際に必要と認whoisデータベースです。うになっている現状では醜いていただきたいと思いますようにこれを避けるためにっていきたいと考えてい:私gwhoisコマンドを解析し、その出力に出力します。醜い.

かったので検索してみるべpythonicをすることが課題です。一般的にっていうのもいろいろあるなあ- このような議論の一覧リンク にはチェックする場合にはドメインが存在します。あなた...だいたanwser Googleたというんだっunanwseredます。

他の成功を取得する方法と。んざいくつかのヒントに、あるいはんなのopensource-、腰を据えてコードなければならないものがあるもん。:)

役に立ちましたか?

解決

あるのに使うコマンドラインユーティリティだと考えている。を入れれば素敵なラッパーのサービスを実装する事が出来ますinternalsします。例えば:

class Whois(object):
    _whois_by_query_cache = {}

    def __init__(self, query):
        """Initializes the instance variables to defaults. See :meth:`lookup`
        for details on how to submit the query."""
        self.query = query
        self.domain = None
        # ... other fields.

    def lookup(self):
        """Submits the `whois` query and stores results internally."""
        # ... implementation

現在、ロールを使用して自分でurllibに包み、周辺のコマンドラインユーティリティ(のようにやっている)は、本ソフトウェアを第三者に図書館を使用するような なんて言って)このインタフェースの滞在と同じです。

このアプローチは一般的にな醜いで-- 時にはコマンドを供いたいもの、対応することができるでしょう活用して.ばれてくるボトルネックは、抽象化の過程に切り替えるネイティブのPython実装は透明なクライアントのコードです。

実用性ビート純度 --それがPythonic.:)

他のヒント

この:http://code.google.com/p/pywhois/

pywhois-Pythonモジュールの検索をするWHOIS情報の領域

目標:-をimportable Pythonモジュールを構文解析WHOISデータを指定された。-できるデータを抽出のためのすべての人気のTld(com、net、...) 問合せは、WHOISサーバーに直接を通じてではなく、中間webサービスなどその他多数います。-作品はPython2.4+、外部の依存関係

例:

>>> import pywhois
>>> w = pywhois.whois('google.com')
>>> w.expiration_date
['14-sep-2011']
>>> w.emails
['contact-admin@google.com',
 'dns-admin@google.com',
 'dns-admin@google.com',
 'dns-admin@google.com']
>>> print w
...

この問題を自分で検索のためのpythonのwhois図書館があります。

知らないと思いcdlearyの答えするライブラリーを使用してのロッドやルアーを使用すること コマンドは常に最良の道から出ない人も結構多いですがその理由と言う。

プロジェクトcmd-線whois取り扱うすべてのハード(ソケット呼び出し、解析など)

コン:な携帯;モジュールは作業によって裏付whoisコマンドです。遅めの実行コマンドがシェルのほか、whoisコマンドです。影響を受けない場合はUNIXとWindows、UNIX、UNIX、 高齢whoisコマンド

いwhoisモジュールを扱うことのできるwhoisのIPルックアップとい符号化を自分のwhoisます。

このモジュールI(軽く)試しの情報:

pywhoisapi:

  • ホーム: http://code.google.com/p/pywhoisapi/
  • デザイン:残りお客様のアクセス良好whois RESTサービス
  • メリット:に対応できるIPアドレスのルックアップ
  • 連結:を引くことができる情報からのwhoisサーバーのその他のRir?

BulkWhois

  • ホーム: http://pypi.python.org/pypi/BulkWhois/0.2.1
  • デザイン:telnetトアクセスwhois telnetクエリからインタフェースRIR(?)
  • メリット:に対応できるIPアドレスのルックアップ
  • 連結:を引くことができる情報からのwhoisサーバーのその他のRir?

pywhois:

  • ホーム: http://code.google.com/p/pywhois/
  • デザイン:残りお客様のアクセスRRID whoisサービス
  • メリット:Accessses多くのRRIDs;はpython3.x支店
  • 連結:いないであろうということを扱うIPアドレスのルックアップ

python-whois:

whoisclient-フォークのpython-whois

  • ホーム: http://gitorious.org/python-whois
  • デザイン:ラップ"whoisコマンド
  • により:IPy.py
  • 連結:いないであろうということを扱うIPアドレスのルックアップ

更新:その結用pywhoisapi逆のルックアップIPることをやってたん

こちらはwhoisお客様の再実施は、Pythonにおけhttp://code.activestate.com/recipes/577364-whois-client/

わからない場合gwhoisは何か特別のサーバー出力ただし、わかりやすく接続のwhoisサーバのポートwhois(43)その他、クエリの読みのすべてのデータの回答および構文解析します。生活で使い易いかをtelnetlib.Telnetクラスの場合でも、whoisプロトコルが簡単になりのtelnetプロトコル)の代わりに平野のソケット

トリッキーパーツ:

  • るwhoisサーバーがオンパレードであります。熟し、ARIN、APNIC、LACNIC、AFRINIC、JPNIC VERIOは、自己等LACNIC関連するすべてのスクフォースメンバーらが返信用のデータを要求以外の領域です。
  • の正確なオプションと引数の各whoisサーバー?を提供するレストランもあり、他になります。一般に、白のドメイン名仕事なします。

別の方法を使用するためには、 urllib2 モジュールを構文解析の一部のページのwhoisサービス(多くのサイトが存在する).そのようなものにハックするか、だとの依存関係がうwhoisサイトを選択したり、悪いです。

ているのは嫌だと言うだけに再実装を行う whois プログラム(大学の世界展開力事のインストール時にインストール、 whois のOSの構文解析の出力(ieう現在のように権利について教えてください。

構文解析を他のページwoulndなどを想定をhtml woulndない非常に悪いるようです)それを実際に絞ってまい、思った)

実際に見にいくつかの古いプロジェクトsourceforge: rwhois.py.何を救うチャンスは最後の更新ですから2003年.ですが、という見方もあるかもしれないが場所として開始reimplementation思い...もっobliguedへのポストへのリンクはこのプロジェクトとにかく、さらなる参考にする。

import socket
socket.gethostbyname_ex('url.com')

場合を返しますgaierrorいかにも登録されていませんDNS

ここでは利用可能で解決することができます私記述のためのPython3.1(backportingにPy2.xに特別な注意を払のバイト/Unicode文字の区別).単一のアクセスする方法 DRWHO.whois(), る期待のドメイン名を渡す。そして解決する名前のプロバイダとして設定し DRWHO.whois_providers[ '*' ] (より完全な解決が差別化の提供者によるトップレベルドメイン). DRWHO.whois() 戻った辞書とシングル text, の応答をテキストに返送によるWHOISサーバーです。再度、より完全ソリューションという構文のテキスト(これを個別のプロバイダが標準形式)を返し、より構造化フォーマット(例えば、設定フラグ available るかどうかを指定するドメインに見え。お楽しみに!

##########################################################################
import asyncore as                                   _sys_asyncore
from asyncore import loop as                         _sys_asyncore_loop
import socket as                                     _sys_socket



##########################################################################
class _Whois_request( _sys_asyncore.dispatcher_with_send, object ):
  # simple whois requester
  # original code by Frederik Lundh

  #-----------------------------------------------------------------------
  whoisPort = 43

  #-----------------------------------------------------------------------
  def __init__(self, consumer, host, provider ):
    _sys_asyncore.dispatcher_with_send.__init__(self)
    self.consumer = consumer
    self.query    = host
    self.create_socket( _sys_socket.AF_INET, _sys_socket.SOCK_STREAM )
    self.connect( ( provider, self.whoisPort, ) )

  #-----------------------------------------------------------------------
  def handle_connect(self):
    self.send( bytes( '%s\r\n' % ( self.query, ), 'utf-8' ) )

  #-----------------------------------------------------------------------
  def handle_expt(self):
    self.close() # connection failed, shutdown
    self.consumer.abort()

  #-----------------------------------------------------------------------
  def handle_read(self):
    # get data from server
    self.consumer.feed( self.recv( 2048 ) )

  #-----------------------------------------------------------------------
  def handle_close(self):
    self.close()
    self.consumer.close()


##########################################################################
class _Whois_consumer( object ):
  # original code by Frederik Lundh

  #-----------------------------------------------------------------------
  def __init__( self, host, provider, result ):
    self.texts_as_bytes = []
    self.host           = host
    self.provider       = provider
    self.result         = result

  #-----------------------------------------------------------------------
  def feed( self, text ):
    self.texts_as_bytes.append( text.strip() )

  #-----------------------------------------------------------------------
  def abort(self):
    del self.texts_as_bytes[:]
    self.finalize()

  #-----------------------------------------------------------------------
  def close(self):
    self.finalize()

  #-----------------------------------------------------------------------
  def finalize( self ):
    # join bytestrings and decode them (witha a guessed encoding):
    text_as_bytes         = b'\n'.join( self.texts_as_bytes )
    self.result[ 'text' ] = text_as_bytes.decode( 'utf-8' )


##########################################################################
class DRWHO:

  #-----------------------------------------------------------------------
  whois_providers = {
    '~isa':   'DRWHO/whois-providers',
    '*':      'whois.opensrs.net', }

  #-----------------------------------------------------------------------
  def whois( self, domain ):
    R         = {}
    provider  = self._get_whois_provider( '*' )
    self._fetch_whois( provider, domain, R )
    return R

  #-----------------------------------------------------------------------
  def _get_whois_provider( self, top_level_domain ):
    providers = self.whois_providers
    R         = providers.get( top_level_domain, None )
    if R is None:
      R = providers[ '*' ]
    return R

  #-----------------------------------------------------------------------
  def _fetch_whois( self, provider, domain, pod ):
    #.....................................................................
    consumer  = _Whois_consumer(           domain, provider, pod )
    request   = _Whois_request(  consumer, domain, provider )
    #.....................................................................
    _sys_asyncore_loop() # loops until requests have been processed


#=========================================================================
DRWHO = DRWHO()


domain    = 'example.com'
whois     = DRWHO.whois( domain )
print( whois[ 'text' ] )
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top