class Actir::CookiesBaidu
Public Class Methods
baifubao_BDUSS()
click to toggle source
# File lib/actir/script/cookies_baidu.rb, line 223 def baifubao_BDUSS "BDUSS" end
baifubao_STOKEN()
click to toggle source
# File lib/actir/script/cookies_baidu.rb, line 227 def baifubao_STOKEN "STOKEN" end
baifubao_account_file()
click to toggle source
百度账号配置文件
# File lib/actir/script/cookies_baidu.rb, line 211 def baifubao_account_file File.join(Actir::Config.default_config_dir, "/pay.yaml") end
baifubao_key()
click to toggle source
# File lib/actir/script/cookies_baidu.rb, line 231 def baifubao_key "pay.baifubao" end
clear_after_failure()
click to toggle source
更新baidu_cookies失败后的清理操作。目前需要手动调用,后续优化
# File lib/actir/script/cookies_baidu.rb, line 173 def clear_after_failure if @browser != nil @browser.close end end
directory()
click to toggle source
获取cookies文件的路径 因为涉及到权限问题,路径需要放在个人账号目录下 通过whoami命令获取当前账户名称 暂时存放在/User/xx/目录下
# File lib/actir/script/cookies_baidu.rb, line 201 def directory user_home = `echo ~` return user_home.chomp + "/cookies/" end
directory_exists?()
click to toggle source
# File lib/actir/script/cookies_baidu.rb, line 193 def directory_exists? File::directory?(directory) end
file_exists?()
click to toggle source
# File lib/actir/script/cookies_baidu.rb, line 189 def file_exists? File::exists?(directory + file_name) end
file_name()
click to toggle source
# File lib/actir/script/cookies_baidu.rb, line 206 def file_name "cookies.yaml" end
get_useful_card()
click to toggle source
获取可用的百度账号的hash 返回值{card1 => {“username” => “xxx”, “password”=>“iloveyouzan”, xxx}}
# File lib/actir/script/cookies_baidu.rb, line 92 def get_useful_card # old_config = Actir::Config.config_dir # Actir::Config.config_dir = script_config_path #通过配置文件判断取出可用的卡的参数 baidu_card = Actir::Config.get(baifubao_key) card = {} baidu_card.each do |key, value| if value["available"] == true # 顺便取一下cookies baidu_card_cookies = Actir::Config.get("cookies." + key, directory) # value["BAIDUID"] = baidu_card_cookies["BAIDUID"] value[baifubao_BDUSS] = baidu_card_cookies[baifubao_BDUSS] value[baifubao_STOKEN] = baidu_card_cookies[baifubao_STOKEN] #有可用的卡,取出cookies等参数 card.store(key, value) break end end # Actir::Config.config_dir = old_config card end
init()
click to toggle source
cookies文件初始化
# File lib/actir/script/cookies_baidu.rb, line 7 def init need_init_cookies = false #判断文件是否存在 if file_exists? # 读取下配置文件中是否真的有cookies数据,如果没有一样要更新 cookies = get_cookies("card1") # 判断存在的cookies文件是否有规范的cookies内容 if cookies == nil need_init_cookies = true else if cookies.has_key?(baifubao_BDUSS) && cookies.has_key?(baifubao_STOKEN) if cookies[baifubao_BDUSS] == nil || cookies[baifubao_STOKEN] == nil need_init_cookies = true else need_init_cookies = false end else need_init_cookies = true end end else if directory_exists? #文件不存在则看目录是否存在 #目录存在则创建文件 need_init_cookies = true else #目录和文件都不存在则创建目录再创建文件 Dir.mkdir(directory) need_init_cookies = true end end if need_init_cookies == true file = File.new(directory + file_name, "w") file.syswrite(init_content) file.close # 暂时先只更新一张卡吧 update_cookies("card1") end end
init_content()
click to toggle source
默认的配置文件内容,cookies的key
# File lib/actir/script/cookies_baidu.rb, line 216 def init_content "card1:\n" + " " + baifubao_BDUSS + ": \n" + " " + baifubao_STOKEN + ": \n" end
login_baifubao(username, password)
click to toggle source
登录百付宝主页
# File lib/actir/script/cookies_baidu.rb, line 148 def login_baifubao(username, password) # 选择账号登陆(默认是短信快捷登录,所以需要点击切换一下) link_baifubao_login_back.wait_until_present link_baifubao_login_back.click # 输入账号密码 text_baifubao_username.wait_until_present text_baifubao_username.set username text_baifubao_password.set password button_baifubao_login.click end
open_baifubao(address = [])
click to toggle source
访问百付宝主页
# File lib/actir/script/cookies_baidu.rb, line 135 def open_baifubao(address = []) if address.size == 0 if $mode == :remote address = Actir::Remote.get_remote_address(1) end end @browser = Browser.new(:www, :url => address[0], :mode => $mode, :browser => :chrome, :window_size => nil) # @browser.goto "baifubao.com" @browser.goto "https://www.baifubao.com/user/0/login/0" @browser end
re_available()
click to toggle source
将所有百度支付卡的available状态恢复为true
# File lib/actir/script/cookies_baidu.rb, line 70 def re_available #每次登陆都判断一下cookies文件的上一次修改时间和当前时间 #如果日期不同,则刷新所有的pay文件中baidu-card的状态 unless Actir::Config.is_same_day?("cookies", directory) Actir::Config.lock("pay") do str_array = IO.readlines(baifubao_account_file) str_array.each_with_index do |line, index| if line =~ /available\:\s*false/ str_array[index] = line.gsub(/false/, 'true') end end cookiesfile = File.open(baifubao_account_file, 'w') str_array.each do |line| cookiesfile.puts line end cookiesfile.close end end end
set_useless_card(card)
click to toggle source
设置不可用的卡
# File lib/actir/script/cookies_baidu.rb, line 115 def set_useless_card(card) Actir::Config.set(baifubao_key + "." + card + "." + "available", "false") end
update_all(address = [])
click to toggle source
更新百度账号所有的配置文件
# File lib/actir/script/cookies_baidu.rb, line 52 def update_all(address = []) baidu_card = Actir::Config.get(baifubao_key) # 确认目前可用的卡的数目和cookies文件上的是否匹配 # TODO 先不实现,cookies文件上的cards数量过多目前看不影响 # baidu_card_cookies = Actir::Config.get("cookies", directory) # if baidu_card_cookies != nill && baidu_card != nil # if baidu_card_cookies.size > baidu_card.size # # end # else # raise "no baifubao cards" # end baidu_card.each do |card, value| update_cookies(card, address) end end
Private Class Methods
link_baifubao_login_back()
click to toggle source
返回账号登陆的按钮
# File lib/actir/script/cookies_baidu.rb, line 250 def link_baifubao_login_back @browser.link(:id => 'TANGRAM__PSP_4__sms_btn_back') end
text_baifubao_password()
click to toggle source
# File lib/actir/script/cookies_baidu.rb, line 241 def text_baifubao_password @browser.text_field(:id => 'TANGRAM__PSP_4__password') end
text_baifubao_username()
click to toggle source
# File lib/actir/script/cookies_baidu.rb, line 237 def text_baifubao_username @browser.text_field(:id => 'TANGRAM__PSP_4__userName') end