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 的错误。

所以我的问题是:如果我确实设法将 cookie 添加到第二个代码示例中,我如何使用该请求进行查找?有人可以为此提供代码示例吗?

谢谢,

山姆

编辑:我搜索了更多,找到了 mechanize 库。有人可以建议如何使用它来发出 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这样的无头浏览器,我认为这对您来说就足够了。我已经用它来自动化许多我以前用斜纹/机械化做的任务,但由于页面变得复杂,有许多 AJAX 调用和引擎盖下的交互,所以我没有成功。例如,查看使用 yelp示例查找 pizaa 以了解它有多容易

您可以将 phantomjs 作为一个单独的进程启动,例如使用子进程模块并读取标准输出,如果您需要避免每次都打开进​​程,您可以有一个单独的进程来保持长时间运行的 phantomjs 用于此目的。

于 2012-10-27T01:15:01.630 回答