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

まず、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 に答える
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 に答える