首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Net::HTTPNotFound for https://dashboard.stripe.com/login --未处理响应

Net::HTTPNotFound for https://dashboard.stripe.com/login --未处理响应
EN

Stack Overflow用户
提问于 2016-02-21 06:12:11
回答 1查看 393关注 0票数 0

我们需要在特定时间内检索对Stripe实例的日志的访问。那里没有端点API (grrrr),所以我们正在尝试快速的屏幕抓取,因为仪表板很好地构造了它们。

不过,在这一点上,我甚至无法使用机械登录到Stripe中。下面是我用来登录的代码

代码语言:javascript
复制
require 'mechanize'

agent = Mechanize.new
agent.user_agent_alias = 'Mac Safari'
agent.follow_meta_refresh = true

starting_link = 'https://dashboard.stripe.com/login'

page = agent.get(starting_link)
login_form = page.form

login_form.email = email
login_form.password = pass

new_page = agent.submit(login_form, login_form.buttons[0])

我从运行这个过程中得到的反应是:

代码语言:javascript
复制
Mechanize::ResponseCodeError: 404 => Net::HTTPNotFound for      https://dashboard.stripe.com/login -- unhandled response
from /Users/Nicholas/.rvm/gems/ruby-2.2.2/gems/mechanize-2.7.4/lib/mechanize/http/agent.rb:316:in `fetch'
from /Users/Nicholas/.rvm/gems/ruby-2.2.2/gems/mechanize-2.7.4/lib/mechanize.rb:1323:in `post_form'
from /Users/Nicholas/.rvm/gems/ruby-2.2.2/gems/mechanize-2.7.4/lib/mechanize.rb:584:in `submit'
from (irb):21
from /Users/Nicholas/.rvm/rubies/ruby-2.2.2/bin/irb:11:in `<main>'

我试着登录到其他几个站点,并取得了成功。我还对代理进行了化名,并处理了重定向(其他问题中提到的策略)。

有谁知道可以做什么调整来使日志机械化进入条纹呢?

非常感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-21 09:52:35

简短回答:

我建议使用像Selenium这样的浏览器引擎来获取日志数据,因为这样做要简单得多。

长答案:

尽管您的mechanize表单提交代码是正确的,但假设Stripe登录表单是使用正常的POST请求提交的,但情况并非如此。

Stripe登录表单是使用AJAX请求提交的。

以下是考虑到这一点的工作代码:

代码语言:javascript
复制
require 'mechanize'

agent = Mechanize.new
agent.user_agent_alias = 'Mac Safari'
agent.follow_meta_refresh = true

starting_link = 'https://dashboard.stripe.com/login'

page = agent.get(starting_link)
login_form = page.form

login_form.action = 'https://dashboard.stripe.com/ajax/sessions'
login_form.email = email
login_form.password = password

new_page = agent.submit(login_form, login_form.buttons[0])

如您所见,只需将表单的操作属性设置为AJAX url即可解决您的问题。

但是,一旦您成功登录,在站点周围导航以查找日志将不可能使用mechanize,因为它不支持javascript。您可以通过请求仪表板的url来检查它。您将得到一条启用javascript的错误消息。

此外,Stripe的仪表板是完全由javascript供电的。它只需发出一个AJAX请求,从服务器获取数据,然后将其呈现为HTML

当服务器响应是JSON时,这可以对您起作用。您可以简单地解析它并从日志中获取所需的信息。

经过进一步的检查(在Chrome工具中),我发现日志是从url https://dashboard.stripe.com/ajax/logs?count=5&include%5B%5D=total_count&limit=10&method=not_get请求的。

同样,如果您尝试使用mechanize访问这个url,您将遇到CSRF令牌问题,这是Stripe在请求之间维护的。

CSRF令牌问题可以使用mechanize cookie来解决,但不值得为此付出努力。

我建议使用像Selenium这样的浏览器引擎来获取日志数据,因为这样会简单得多。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35532932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档