0

http://www.domaintools.com/research/reverse-ip/にアカウントがあります。私は彼らの ajax 検索を調べて、次のように python ルックアップを実行しようとしました。

req = urllib2.Request('http://www.domaintools.com/research/reverse-ip?    ajax=mReverseIP&call=getIPResults&args[0]=64.233.161.104+"&args[1]=20')
import base64
base64string = base64.encodestring('%s:%s' % ('USERNAME', 'PASSWORD'))[:-1]
authheader =  "Basic %s" % base64string
req.add_header("Authorization", authheader)
conn = urllib2.urlopen(req,timeout=5)

しかし、「ログインしてください」と返ってきます。したがって、基本認証をサポートしていないと思います。

私はそれから試しました

req = urllib2.Request('https://secure.domaintools.com/log-in/?r=http%3A%2F%2Fwww.domaintools.com%2Fresearch%2Freverse-ip%2F')
import base64
base64string = base64.encodestring('%s:%s' % ('USERNAME', 'PASSWORD'))[:-1]
authheader =  "Basic %s" % base64string
req.add_header("Authorization", authheader)
conn = urllib2.urlopen(req,timeout=5)

しかし、Cookieが必要なエラーが発生しています。

私の質問は次のとおりです: 2 番目のコード サンプルに Cookie を追加できた場合、その要求を使用してルックアップを行うにはどうすればよいでしょうか? 誰かがこれのコードサンプルを提供できますか?

ありがとう、

サム

編集:さらに検索して、機械化ライブラリを見つけました。誰かがそれを使用して Ajax リクエストを行う方法を提案できますか?

私は今ここまで来ました:

import mechanize
browser = mechanize.Browser() 
browser.set_handle_robots(False)
browser.open('https://secure.domaintools.com/log-in/?r=http%3A%2F%2Fwww.domaintools.com%2Fresearch%2Freverse-ip%2F')
browser.select_form(nr=0)

browser["username"] = 'username'
browser["password"] = 'pass'
browser.new_control("HIDDEN", "action", {})
control = browser.form.find_control("action")
control.readonly = False
browser["action"] = "login"
browser.method = "POST"
browser.action = "#"

response = browser.submit()

それで?

4

1 に答える 1

0

難しい方法:

  • そのページがどのように機能するか、フォームがどのように送信されるかを調べ、Cookie を使用した単純なフォーム送信であるか、AJAX 呼び出しであるかを調べてから、いくつかのライブラリを使用してそれを複製します

簡単な方法:

  • ブラウザはすでにこれらすべてを行っています。これを自動化したい場合は、phantomjsのようなヘッドレス ブラウザを使用してください。それで十分だと思います。私はこれを使用して、twill/mechanize で行っていた多くのタスクを自動化しましたが、ページが多くの AJAX 呼び出しと内部の相互作用で複雑になっているため、失敗しました。たとえば、yelp を使用して pizaa を検索する例を参照して、いかに簡単かを確認してください。

サブプロセス モジュールを使用して stdout を読み取るなど、別のプロセスとして phantomjs を開始できます。毎回プロセスを開くことを避ける必要がある場合は、そのような目的のために長時間実行されている phantomjs を保持する別のプロセスを持つことができます。

于 2012-10-27T01:15:01.630 に答える