Сценарий написан в рубин и предназначен для работы в CGI-BIN в качестве веб-сервера.
Основная цель заключается в повышении осведомленности о важности только для чтения API. Если разработчик coinotron выпустил эту чрезвычайно простую JSON API, этот сценарий будет бесполезным. Спасибо!
Код:
#! / USR / бен / окр рубин
имя пользователя = "XXXXXXXX"
пароль = "XXXXXXXXX"
путы "Content-тип: текст / текст \ п \ п" если ENV ["HTTP_HOST"] .nil?
требуется «HttpClient»
CLNT = HTTPClient.new
clnt.set_cookie_store ("cookie.dat")
г = clnt.get "https://coinotron.com/coinotron/AccountServlet?action=home"
в то время как r.header.status_code == 302 сделать
г = clnt.get r.header ["Место нахождения"] [0]
конец
clnt.post "https://coinotron.com/coinotron/AccountServlet?action=logon", {"имя" знак равно> имя пользователя, "пароль" знак равно> пароль, "Вход в систему" знак равно> "Вход в систему"}
HTML = clnt.get_content "https://coinotron.com/coinotron/AccountServlet?action=myaccount"
требуется «nokogiri»
док = Nokogiri :: HTML.parse HTML
ч = Hash.new
час["работник"] = Hash.new
ltc_cr = ltc_ucf = ltc_c = 0
doc.css ("вход") .each делать | я |
ltc_cr = я ["стоимость"] .to_f, если я ["имя"] == "CurrentRoundRewardsLTC"
ltc_ucf = я ["стоимость"] .to_f, если я ["имя"] == "UnconfirmedRewardsLTC"
ltc_c = я ["стоимость"] .to_f, если я ["имя"] == "ConfirmedRewardsLTC"
конец
ltc_ct = ltc_cr + ltc_ucf + ltc_c
час["CurrentRoundRewardsLTC"] = Ltc_cr
час["UnconfirmedRewardsLTC"] = Ltc_ucf
час["ConfirmedRewardsLTC"] = Ltc_c
час["TotalRewordsLTC"] = Ltc_ct
doc.css ("форма") .each сделать | F |
если е ["действие"] == "/ Coinotron / AccountServlet? Действие = changeworkercoin"
worker_name = f.xpath ("вход [@ имя = \"workername \"]").первый["стоимость"]
час["работник"] [Worker_name] = Hash.new, если ч [worker_name] .nil?
монета = ""
f.css ("вариант") .each сделать | O |
если не о ["выбранный"] .nil?
монета = o.text; ломать
конец
конец
час["работник"] [Worker_name] ["монета"] = Монета
конец
если е ["действие"] == "/ Coinotron / AccountServlet? Действие = changeworkerrewardtype"
worker_name = f.xpath ("вход [@ имя = \"workername \"]").первый["стоимость"]
час["работник"] [Worker_name] = Hash.new, если ч [worker_name] .nil?
workerrewardtype = ""
f.css ("вариант") .each сделать | O |
если не о ["выбранный"] .nil?
workerrewardtype = o.text; ломать
конец
конец
час["работник"] [Worker_name] ["workerrewardtype"] = Workerrewardtype
конец
конец
doc.css ("тр") .each сделать | ряд |
кт = 0
worker_name = хаш = ""
row.children.each делать | с |
worker_name = c.text.strip если c.name == "тд" и кт == 2
хаш = c.text.strip если c.name == "тд" и кт == 6
кт + 1 =
конец
дальше, если ч ["работник"] [Worker_name] .nil?
час["работник"] [Worker_name] ["хаш"] = Хаш
конец
#puts ч
требуется «» JSON
ставит h.to_json
имя пользователя = "XXXXXXXX"
пароль = "XXXXXXXXX"
путы "Content-тип: текст / текст \ п \ п" если ENV ["HTTP_HOST"] .nil?
требуется «HttpClient»
CLNT = HTTPClient.new
clnt.set_cookie_store ("cookie.dat")
г = clnt.get "https://coinotron.com/coinotron/AccountServlet?action=home"
в то время как r.header.status_code == 302 сделать
г = clnt.get r.header ["Место нахождения"] [0]
конец
clnt.post "https://coinotron.com/coinotron/AccountServlet?action=logon", {"имя" знак равно> имя пользователя, "пароль" знак равно> пароль, "Вход в систему" знак равно> "Вход в систему"}
HTML = clnt.get_content "https://coinotron.com/coinotron/AccountServlet?action=myaccount"
требуется «nokogiri»
док = Nokogiri :: HTML.parse HTML
ч = Hash.new
час["работник"] = Hash.new
ltc_cr = ltc_ucf = ltc_c = 0
doc.css ("вход") .each делать | я |
ltc_cr = я ["стоимость"] .to_f, если я ["имя"] == "CurrentRoundRewardsLTC"
ltc_ucf = я ["стоимость"] .to_f, если я ["имя"] == "UnconfirmedRewardsLTC"
ltc_c = я ["стоимость"] .to_f, если я ["имя"] == "ConfirmedRewardsLTC"
конец
ltc_ct = ltc_cr + ltc_ucf + ltc_c
час["CurrentRoundRewardsLTC"] = Ltc_cr
час["UnconfirmedRewardsLTC"] = Ltc_ucf
час["ConfirmedRewardsLTC"] = Ltc_c
час["TotalRewordsLTC"] = Ltc_ct
doc.css ("форма") .each сделать | F |
если е ["действие"] == "/ Coinotron / AccountServlet? Действие = changeworkercoin"
worker_name = f.xpath ("вход [@ имя = \"workername \"]").первый["стоимость"]
час["работник"] [Worker_name] = Hash.new, если ч [worker_name] .nil?
монета = ""
f.css ("вариант") .each сделать | O |
если не о ["выбранный"] .nil?
монета = o.text; ломать
конец
конец
час["работник"] [Worker_name] ["монета"] = Монета
конец
если е ["действие"] == "/ Coinotron / AccountServlet? Действие = changeworkerrewardtype"
worker_name = f.xpath ("вход [@ имя = \"workername \"]").первый["стоимость"]
час["работник"] [Worker_name] = Hash.new, если ч [worker_name] .nil?
workerrewardtype = ""
f.css ("вариант") .each сделать | O |
если не о ["выбранный"] .nil?
workerrewardtype = o.text; ломать
конец
конец
час["работник"] [Worker_name] ["workerrewardtype"] = Workerrewardtype
конец
конец
doc.css ("тр") .each сделать | ряд |
кт = 0
worker_name = хаш = ""
row.children.each делать | с |
worker_name = c.text.strip если c.name == "тд" и кт == 2
хаш = c.text.strip если c.name == "тд" и кт == 6
кт + 1 =
конец
дальше, если ч ["работник"] [Worker_name] .nil?
час["работник"] [Worker_name] ["хаш"] = Хаш
конец
#puts ч
требуется «» JSON
ставит h.to_json
Тогда вывод выглядит
Код:
{"CurrentRoundRewardsLTC"знак равно>0.0, "UnconfirmedRewardsLTC"знак равно>0.0, "ConfirmedRewardsLTC"знак равно>2.91905758, "TotalRewordsLTC"знак равно>2.91905758, "idler921.gpu"знак равно>{"монета"знак равно>"LTC", "workerrewardtype"знак равно>"Круглый основе платить за акцию", "хаш"знак равно>"152,2 КН / с"}, "idler921.cpu"знак равно>{"монета"знак равно>"LTC", "workerrewardtype"знак равно>"Оплата за акцию", "хаш"знак равно>"45.0 КН / с"}}