2

我想在没有 Ruby 的情况下登录 vk.com 或 m.vk.com。但是我的代码不起作用。

require 'net/http'

email = "qweqweqwe@gmail.com"
pass = "qeqqweqwe"

userUri = URI('m.vk.com/index.html')
Net::HTTP.get(userUri)
res = Net::HTTP.post_form(userUri, 'email' => email, 'pass' => pass)
puts res.body
4

2 回答 2

2

这种任务正是 Mechanize 的用途。Mechanize 会自动处理重定向和 cookie。你可以这样做:

require 'mechanize'

agent = Mechanize.new
url = "http://m.vk.com/login/"

page = agent.get(url)

form = page.forms[0]
form['email'] = "qweqweqwe@gmail.com"
form['pass'] = "qeqqweqwe"
form.submit

puts agent.page.body
于 2012-11-03T01:49:15.700 回答
2

首先,您需要将 userUri 更改为以下内容:

userUri = URI('https://login.vk.com/?act=login')

这是 vk 站点需要您的登录参数的地方。

我对 vk 不是很熟悉,但您可能需要一种方法来处理会话 cookie。既接收它,又为将来的请求提供它。你能详细说明你登录后在做什么吗?

这是用于 cookie 处理的 net/http 信息:

# Headers
res['Set-Cookie']            # => String
res.get_fields('set-cookie') # => Array
res.to_hash['set-cookie']    # => Array
puts "Headers: #{res.to_hash.inspect}"
于 2012-11-03T00:16:59.740 回答