我正在尝试获取https://www.google.com/webmasters/tools/index-status?hl=en&authuser=0&siteUrl=xxx
的来源,以便获取由于某种原因未通过webmasters v3
API公开的索引状态编号。
现在我不能只进行HTTParty.get(url)
调用,因为这只会让我重定向到帐户登录页面(https://accounts.google.com/ServiceLogin?xxxxxx
)。如果我运行HTTParty.get(url, {follow_redirects: false})
,我会收到302错误,因为该网页无法将我重定向到Google的登录页面。
基本上问题是:是否可以获取我现有的登录cookie并将其提供给脚本或让脚本“登录”然后存储会话cookie?
后一部分基本上包括:
https://accounts.google.com
答案 0 :(得分:0)
是的,可以使用您的cookie并发送它。这就是浏览器的工作原理。
GET /spec.html HTTP/1.1
Host: www.example.org
Cookie: theme=light; sessionToken=abc123
…
要弄清楚到底发生了什么,需要做一些工作。我建议查看浏览器上的“网络”选项卡以查看每个HTTP请求。
答案 1 :(得分:0)
致@the-tin-man建议mechanize
。对于其他任何想要获得有效谷歌会话的人来说,无论您需要什么样的服务:
agent = Mechanize.new
login_page = agent.get("https://accounts.google.com")
login_form1 = login_page.form
login_form1.Email = "your_google_email_here"
login_form2 = login_form1.click_button
login_form2.form.Passwd = "your_google_password"
login_form2.form.click_button
#at this point you have a valid google session so the next part is specific for my needs
search_console_page = agent.get("https://www.google.com/webmasters/tools/index-status?hl=en&authuser=0&siteUrl=xxx")
total_indexed = search_console_page.search("td.property div.primary").inner_html.gsub(',', '').to_i
现在我只需要弄清楚如何永久存储该cookie,这样我每次使用时都不需要登录。