很久没更新但还是陆续有访问者,有点而不安。
发个和百度最近的说吧有点儿关系的脚本。
你懂得。
#!/usr/bin/env ruby
# @auther xhan
# @date sep19, 2010
# @website http://ixhan.com
require 'net/http'
require 'net/https'
require 'rubygems'
require 'json'
def follow!
# puts "usage: from_id to_id(not included)" and return unless ARGV.count == 2 #why not works?
if ARGV.count != 2
puts "usage: from_id to_id(not included)"
return
end
from,to = ARGV
from,to = from.to_i,to = to.to_i - 1
total = to - from + 1
puts "wrong argus" and return if total < 0
puts "=== Task starts at duration [#{from},#{to}]"
http = Net::HTTP.new('t.baidu.com')
path = '/follow/setfollow?rn=56.392819142620596'
headers = {
'Cookie' => "YOUR COOKIES HERE",
'Referer' => 'http://t.baidu.com/',
'Content-Type' => 'application/x-www-form-urlencoded; charset=UTF-8'
# X-Request-By baidu.ajax
}
# {"status":-1,"msg":"已经关注了"}
# {"status":-1,"msg":"该用户不存在或者帐号异常"}
# status = 1 => success
successed = 0
start_time = Time.now
(from..to).each do |uid|
data = "&uid=#{uid}&t=t"
resp, data = http.post(path, data, headers)
# puts 'Code = ' + resp.code + ' Msg = ' + resp.message
# resp.each {|key, val| puts key + ' = ' + val}
puts "uid #{uid}: data:#{data}"
json = JSON.parse(data)
successed += 1 if json['status'].to_i == 1
end
end_time = Time.now
puts "=== Task finished =============="
puts "time: #{end_time-start_time}"
puts "followed:#{successed}"
puts "failed:#{total - successed}"
puts "================================"
end
follow!
使用说明
不过好久没写ruby有个问题请教下。
为什么
# puts "usage: from_id to_id(not included)" and return unless ARGV.count == 2 #why not works?
这句话的 return 不管用?