MobileBalance
Загрузить
Инструкция
FAQ на сайте
Плагины
Купить
Анализ детализаций
Загрузить
Инструкция
Купить
Поиск по адресу на спутниковой карте Москвы
Форум
Участники
Помощь
Вход-регистрация
фразу
слово
все слова
On-line: гостей 0. Всего: 0 [
подробнее..
]
имя:
пароль:
-
зарегистрироваться, я новый участник
-
я забыл пароль, прошу выслать на е-майл
Перед тем как что-нибудь написать, прочтите, пожалуйста,
правила
форума, обратив особое внимание на
п.3
!
Форум
»
»
Костыль для Мегафона.
Переход по разделам форума
Архив
перенос
Автор
Сообщение
leha3d
Не зарегистрирован
Зарегистрирован: 09.01.19
Отправлено: 09.01.19 18:09. Заголовок: Костыль для Мегафона.
Может надо кому. Попробовал написать плагин для Мегафона (обновленный личный кабинет после ноября 2018г.)
У меня, вроде, работает.
https://yadi.sk/d/EMh15xKcdoB55w
Видит только баланс и имя абонента.
Спасибо: 10
Профиль
Цитата
Ответить
Ответов - 222 , стр:
1
2
3
4
5
6
7
8
9
10
11
12
All
[
только новые
]
sham1975
moderator
Пост N: 74
Зарегистрирован: 27.05.13
Отправлено: 19.10.19 00:28. Заголовок: y-greek пишет: Прог..
y-greek пишет:
цитата:
Программа вообще то вполне портабельная (за исключением того что не free лицензия прячется где-то в реестре, наверное). Можно папку скопировать на флешку и посмотреть как будет на другом компе.
к сожалению (или нет), у меня на всех трёх компах одинаковое программное обеспечение (Win10) ... не можешь глянуть, что ещё можно выкинуть из текста твоего плагина ?! ... вот итоговый текст, с которым всё работает быстро и замечательно !!! ... с учётом того, что по "апи" мне не судьба, соответственно, все лишние строчки тоже не нужны, в принципе:
Скрытый текст
// Плагин для программы MobileBalance:
http://mtsoft.ru/mobilebalance/
//
// Инструкция по использованию:
// 1. зайти в настройки программы MobileBalance, перейти на закладку "Плагины: Операторы", добавить плагин.
// 2. После этого перейти на закладку "Телефоны" и в качестве оператора выбрать оператора с названием, указанным ниже.
//
// FullName : Мегафон-JSON
// ShortName : MgfJSON
// Version : 18.10.2019
// Icon : 789C73F235636100033320D600620128666450804840E591C1FFFFFFB1E237DF1F32CCBF91C7B0F66E13C3D3AFD771AA43C63FFE7C6688D8C5CC10B69381E1FCEB6D601A19171ED1C0A9F7CCAB4D286AB1E987E15B1F8EA1E9FF87A1069F7E10FEF7FF2F5C7FDC5E1E9CFA41F265C7F4C1EA57DDA963C838280516CB3C2803D78FCD7C64FDFD1743C1F4D9D79B196A4E5AC0F5806850D8E2D38F0F5F7EBB8761F59D7AAC725B1FF4E1751F084FBF92C8B0FDD124BC76E0D33FE95214C3B73F1F71EA8BDDC385573FC88FB8E441E2317B38F0EA87F96FF2A56892DD0F731BA130C225F7EFFF1F14FDBFFE7E235AFFA5B7BB71E683C5378B71EA8FD9C389926E09E10B6F7680E9EBEF0FE1540300F7C7D83E
// Author : y-greek на основе 'leha3d (Pasha edit)' от 23.07.2019 и 28.01.2019
// Types : y-greek на основе 'leha3d (Pasha edit)' от 23.07.2019 и 28.01.2019
// Descript : Баланс Мегафона с ручным вводом капчи
// Descript : Теперь берем данные из объекта JSON
// Descript : Если баланс из api не загружается, то берём со страницы
// Descript : Если баланс получен и равен 0 (может такое быть), то изменяется на 0.001
// Descript : Личный кабинет:
https://lk.megafon.ru/login/
function main(){
// минимальная задержка (милисекунды)
// все задержки external.sleep(N*ms)
// в случае проблем можно попытаться увеличить
var ms = 100;
var pageN = 0;
// wait browser
function wb() { while(ie.busy) external.sleep(ms); }
function a(e){ window.alert(e); }
// главная мантра победы; нашёл этот method, который автор добавил в external, в дампе памяти
// new ActiveXObject не прокатывает
ie = external.newActiveXObject("InternetExplorer.Application");
ie.Visible = true;
ie.Navigate("https://lk.megafon.ru/login/");
wb();
var doc = ie.document;
// заполняем login/password
if(doc.all.j_username) {
doc.all.j_username.value=request.loginValue;
doc.all.j_password.value=request.passwValue;
}
// ждём входа в lk
tmp = doc.title;
while (doc.title == tmp) external.sleep(2*ms);
wb();
external.sleep(2*ms);
// кликаем по всем стрелкам - данные на странице подгружаются динамически
var arrows = doc.getElementsByClassName("lk_svg lk_svg_arrow");
for(i=0; i<arrows.length; i++) { arrows
.click(); external.sleep(2*ms); }
response.pages[pageN++] = doc.documentElement.outerHTML;
// возвращает JSON из api url
function api(url) {
// чтобы загрузить страницы API, в iframe помещаем скрипт
var tag = doc.createElement("iframe");
// tag.style.display = "none";
// tag.setAttribute("style", "width: 0px; height: 0px; border: none;");
doc.body.appendChild(tag);
tag.contentWindow.document.open();
var script = '\
<script>\
xhr = new XMLHttpRequest();\
xhr.open("GET", "https://lk.megafon.ru' + url + '");\
xhr.send();\
xhr.onload = function(){ document.body.innerHTML = xhr.response; }\
</script>';
// записываем скрипт в iframe
tag.contentWindow.document.write('<body>' + script + '</body>');
wb();
// до 20*ms ждём что содержимое будет соответствовать формату JSON
// не очень правильно, больше ничего не придумал
var response = "";
for(i=0; i<20; i++){
tmp = tag.contentDocument.body.innerHTML;
if(tmp.match(/^\s*\{[\s\S]*\}\s*$/) ) {
response = tmp;
break;
}
external.sleep(ms);
}
// заменяем на пробел
response = response.replace(/ /gm, " ");
return response;
}
// возвращает object из строки json
function json(str) {
try { var obj = eval('(' + str + ')'); }
catch(e) { obj = str; }
return obj;
}
// Баланс
html=doc.documentElement.outerHTML;
regexp=/<i class=.lk_svg lk_svg_user_balans.><.i><p>.*?<.p>/;
// Если есть кредит, то запрашивать баланс без кредита
regexp2=/<div class=.gadget_account_block.><p>Баланс<.p><h4>.*?<.h4>/;
if (res=regexp2.exec(html)) {
tmp=res[0].replace(/ | |\xA0/g, ""); // Удаляем пробелы
tmp=tmp.replace(",", "."); // Заменяем запятую на точку
tmp=tmp.replace(/<div.*<h4>/gm, "");
tmp=tmp.replace(/\u2212/, "-"); // Корректировка Unicode минуса
tmp=tmp.replace(/<i(.*)red.>/gm, ""); // Для отрицательного баланса
response.Balance=parseFloat(tmp);
} else if (res=regexp.exec(html)) {
tmp=res[0].replace(/ | |\xA0/g, ""); // Удаляем пробелы
tmp=tmp.replace(",", "."); // Заменяем запятую на точку
tmp=tmp.replace(/<i.*<p>/gm, "");
tmp=tmp.replace(/\u2212/, "-"); // Корректировка Unicode минуса
tmp=tmp.replace(/<i(.*)red.>/gm, ""); // Для отрицательного баланса
response.Balance=parseFloat(tmp);
};
// Выходим
fin();
function fin() {
ie.Navigate("https://lk.megafon.ru/logout/");
wb();
ie.quit();
}
};
main();
Спасибо: 0
Профиль
Цитата
Ответить
y-greek
Пост N: 16
Зарегистрирован: 13.03.19
Отправлено: 19.10.19 00:54. Заголовок: sham1975 пишет: не..
sham1975 пишет:
цитата:
не можешь глянуть, что ещё можно выкинуть из текста твоего плагина ?!
Вообще-то, чтобы что-то может быть ускорилось, достаточно было закомментировать одну строку:
atourexpense = api("/api/lk/main/atourexpense");
Если обращение к апи не работает, то там подвисает на 2 секунды (ожидая ответа).
Всё остальное убранное (если тебя миллисекунды не напрягают) не затормозит.
Спасибо: 1
Профиль
Цитата
Ответить
sham1975
moderator
Пост N: 75
Зарегистрирован: 27.05.13
Отправлено: 19.10.19 01:10. Заголовок: y-greek пишет: Вооб..
y-greek пишет:
цитата:
Вообще-то, чтобы что-то может быть ускорилось, достаточно было закомментировать одну строку:
atourexpense = api("/api/lk/main/atourexpense");
Если обращение к апи не работает, то там подвисает на 2 секунды (ожидая ответа).
Всё остальное убранное (если тебя миллисекунды не напрягают) не затормозит.
ну а всё-таки :) ... вот ещё подрезал текст ... такой текст тоже работает у меня быстро и без нареканий !!! ... что ещё можно удалить без проблем ?! ... если не трудно, ткни меня носом в те "места" !!! :)
Скрытый текст
// FullName : Мегафон-JSON
// ShortName : MgfJSON
// Version : 18.10.2019
// Icon : 789C73F235636100033320D600620128666450804840E591C1FFFFFFB1E237DF1F32CCBF91C7B0F66E13C3D3AFD771AA43C63FFE7C6688D8C5CC10B69381E1FCEB6D601A19171ED1C0A9F7CCAB4D286AB1E987E15B1F8EA1E9FF87A1069F7E10FEF7FF2F5C7FDC5E1E9CFA41F265C7F4C1EA57DDA963C838280516CB3C2803D78FCD7C64FDFD1743C1F4D9D79B196A4E5AC0F5806850D8E2D38F0F5F7EBB8761F59D7AAC725B1FF4E1751F084FBF92C8B0FDD124BC76E0D33FE95214C3B73F1F71EA8BDDC385573FC88FB8E441E2317B38F0EA87F96FF2A56892DD0F731BA130C225F7EFFF1F14FDBFFE7E235AFFA5B7BB71E683C5378B71EA8FD9C389926E09E10B6F7680E9EBEF0FE1540300F7C7D83E
// Author : y-greek на основе 'leha3d (Pasha edit)' от 23.07.2019 и 28.01.2019
// Types : y-greek на основе 'leha3d (Pasha edit)' от 23.07.2019 и 28.01.2019
// Descript : Баланс Мегафона с ручным вводом капчи
function main(){
// минимальная задержка (милисекунды), все задержки external.sleep(N*ms), в случае проблем можно попытаться увеличить
var ms = 100;
var pageN = 0;
// wait browser
function wb() { while(ie.busy) external.sleep(ms); }
function a(e){ window.alert(e); }
// главная мантра победы; нашёл этот method, который автор добавил в external, в дампе памяти, new ActiveXObject не прокатывает
ie = external.newActiveXObject("InternetExplorer.Application");
ie.Visible = true;
ie.Navigate("https://lk.megafon.ru/login/");
wb();
var doc = ie.document;
// заполняем login/password
if(doc.all.j_username) {
doc.all.j_username.value=request.loginValue;
doc.all.j_password.value=request.passwValue;
}
// ждём входа в lk
tmp = doc.title;
while (doc.title == tmp) external.sleep(2*ms);
wb();
external.sleep(2*ms);
response.pages[pageN++] = doc.documentElement.outerHTML;
// возвращает JSON из api url
function api(url) {
// чтобы загрузить страницы API, в iframe помещаем скрипт
var tag = doc.createElement("iframe");
doc.body.appendChild(tag);
tag.contentWindow.document.open();
var script = '\
<script>\
xhr = new XMLHttpRequest();\
xhr.open("GET", "https://lk.megafon.ru' + url + '");\
xhr.send();\
xhr.onload = function(){ document.body.innerHTML = xhr.response; }\
</script>';
// записываем скрипт в iframe
tag.contentWindow.document.write('<body>' + script + '</body>');
wb();
// до 20*ms ждём что содержимое будет соответствовать формату JSON, не очень правильно, больше ничего не придумал
var response = "";
for(i=0; i<20; i++){
tmp = tag.contentDocument.body.innerHTML;
if(tmp.match(/^\s*\{[\s\S]*\}\s*$/) ) {
response = tmp;
break;
}
external.sleep(ms);
}
// заменяем на пробел
response = response.replace(/ /gm, " ");
return response;
}
// возвращает object из строки json
function json(str) {
try { var obj = eval('(' + str + ')'); }
catch(e) { obj = str; }
return obj;
}
// Баланс
html=doc.documentElement.outerHTML;
regexp=/<i class=.lk_svg lk_svg_user_balans.><.i><p>.*?<.p>/;
// Если есть кредит, то запрашивать баланс без кредита
regexp2=/<div class=.gadget_account_block.><p>Баланс<.p><h4>.*?<.h4>/;
if (res=regexp2.exec(html)) {
tmp=res[0].replace(/ | |\xA0/g, ""); // Удаляем пробелы
tmp=tmp.replace(",", "."); // Заменяем запятую на точку
tmp=tmp.replace(/<div.*<h4>/gm, "");
tmp=tmp.replace(/\u2212/, "-"); // Корректировка Unicode минуса
tmp=tmp.replace(/<i(.*)red.>/gm, ""); // Для отрицательного баланса
response.Balance=parseFloat(tmp);
} else if (res=regexp.exec(html)) {
tmp=res[0].replace(/ | |\xA0/g, ""); // Удаляем пробелы
tmp=tmp.replace(",", "."); // Заменяем запятую на точку
tmp=tmp.replace(/<i.*<p>/gm, "");
tmp=tmp.replace(/\u2212/, "-"); // Корректировка Unicode минуса
tmp=tmp.replace(/<i(.*)red.>/gm, ""); // Для отрицательного баланса
response.Balance=parseFloat(tmp);
};
// Выходим
fin();
function fin() {
ie.Navigate("https://lk.megafon.ru/logout/");
wb();
ie.quit();
}
};
main();
из предыдущего удалил ещё три строчки:
«// кликаем по всем стрелкам - данные на странице подгружаются динамически
var arrows = doc.getElementsByClassName("lk_svg lk_svg_arrow");
for(i=0; i<arrows.length; i++) { arrows.click(); external.sleep(2*ms); }
»
получается, тоже наф не нужны мне !!! :) ... ещё что можно выкинуть к едрене-фене ?! ... пожалуйста, подскажи !!!
Спасибо: 0
Профиль
Цитата
Ответить
sham1975
moderator
Пост N: 76
Зарегистрирован: 27.05.13
Отправлено: 19.10.19 01:31. Заголовок: охренеть ! :) ... уд..
охренеть ! :) ... удалил ПОЧТИ всё ... вот ИТОГОВЫЙ текст, с которым всё отрабатывает быстро и замечательно !!! ... ура !
Скрытый текст
// FullName : Мегафон-JSON
// ShortName : MgfJSON
// Version : 18.10.2019
// Icon : 789C73F235636100033320D600620128666450804840E591C1FFFFFFB1E237DF1F32CCBF91C7B0F66E13C3D3AFD771AA43C63FFE7C6688D8C5CC10B69381E1FCEB6D601A19171ED1C0A9F7CCAB4D286AB1E987E15B1F8EA1E9FF87A1069F7E10FEF7FF2F5C7FDC5E1E9CFA41F265C7F4C1EA57DDA963C838280516CB3C2803D78FCD7C64FDFD1743C1F4D9D79B196A4E5AC0F5806850D8E2D38F0F5F7EBB8761F59D7AAC725B1FF4E1751F084FBF92C8B0FDD124BC76E0D33FE95214C3B73F1F71EA8BDDC385573FC88FB8E441E2317B38F0EA87F96FF2A56892DD0F731BA130C225F7EFFF1F14FDBFFE7E235AFFA5B7BB71E683C5378B71EA8FD9C389926E09E10B6F7680E9EBEF0FE1540300F7C7D83E
// Author : y-greek на основе 'leha3d (Pasha edit)' от 23.07.2019 и 28.01.2019
// Types : y-greek на основе 'leha3d (Pasha edit)' от 23.07.2019 и 28.01.2019
// Descript : Баланс Мегафона с ручным вводом капчи
function main(){
var pageN = 0;
// wait browser
function wb() { while(ie.busy) external.sleep(100); }
function a(e){ window.alert(e); }
// главная мантра победы; нашёл этот method, который автор добавил в external, в дампе памяти, new ActiveXObject не прокатывает
ie = external.newActiveXObject("InternetExplorer.Application");
ie.Visible = true;
ie.Navigate("https://lk.megafon.ru/login/");
wb();
var doc = ie.document;
// заполняем login/password
if(doc.all.j_username) {
doc.all.j_username.value=request.loginValue;
doc.all.j_password.value=request.passwValue;
}
// ждём входа в lk
tmp = doc.title;
while (doc.title == tmp) external.sleep(200);
wb();
external.sleep(200);
response.pages[pageN++] = doc.documentElement.outerHTML;
// Баланс
html=doc.documentElement.outerHTML;
regexp=/<i class=.lk_svg lk_svg_user_balans.><.i><p>.*?<.p>/;
// Если есть кредит, то запрашивать баланс без кредита
regexp2=/<div class=.gadget_account_block.><p>Баланс<.p><h4>.*?<.h4>/;
if (res=regexp2.exec(html)) {
tmp=res[0].replace(/ | |\xA0/g, ""); // Удаляем пробелы
tmp=tmp.replace(",", "."); // Заменяем запятую на точку
tmp=tmp.replace(/<div.*<h4>/gm, "");
tmp=tmp.replace(/\u2212/, "-"); // Корректировка Unicode минуса
tmp=tmp.replace(/<i(.*)red.>/gm, ""); // Для отрицательного баланса
response.Balance=parseFloat(tmp);
} else if (res=regexp.exec(html)) {
tmp=res[0].replace(/ | |\xA0/g, ""); // Удаляем пробелы
tmp=tmp.replace(",", "."); // Заменяем запятую на точку
tmp=tmp.replace(/<i.*<p>/gm, "");
tmp=tmp.replace(/\u2212/, "-"); // Корректировка Unicode минуса
tmp=tmp.replace(/<i(.*)red.>/gm, ""); // Для отрицательного баланса
response.Balance=parseFloat(tmp);
};
// Выходим
fin();
function fin() {
ie.Navigate("https://lk.megafon.ru/logout/");
wb();
ie.quit();
}
};
main();
НО ... я всё же хотел бы услышать совета от профи :( ... что ещё можно удалить ? ... вот, например, осталась пара строчек:
«var pageN = 0;»
«response.pages[pageN++] = doc.documentElement.outerHTML;»
они нужны мне или нет ?
уже на основе этого текста можно назвать СПЕЦПЛАГИН "получение ТОЛЬКО БАЛАНСА от мегафона" !!! :) ... текст получился ОЧЕНЬ коротким :) ... эх, ещё бы что вырезать для суперминимализма ! :) ... так проще мне потом будет у Вас, профи, что-то просить исправить !
Спасибо: 0
Профиль
Цитата
Ответить
y-greek
Пост N: 17
Зарегистрирован: 13.03.19
Отправлено: 19.10.19 01:46. Заголовок: sham1975 пишет: они..
sham1975 пишет:
цитата:
они нужны мне или нет ?
Как я писал, реально может замедлять (на 2 с.) только одна строка. И это совершенно несерьёзно учитывая сколько грузится лк.
Вообще-то, я даже подумываю о введении случайной паузы в лк, чтобы они (мегафоны, блин) не заморочились про ботов.
А микросекунды я не собираюсь экономить. Может потому у тебя и не работает нормально что ты уже в системе наоптимизировал...
Спасибо: 0
Профиль
Цитата
Ответить
sham1975
moderator
Пост N: 77
Зарегистрирован: 27.05.13
Отправлено: 19.10.19 01:54. Заголовок: y-greek пишет: Как ..
y-greek пишет:
цитата:
Как я писал, реально может замедлять (на 2 с.) только одна строка. И это совершенно несерьёзно учитывая сколько грузится лк.
Вообще-то, я даже подумываю о введении случайной паузы в лк, чтобы они (мегафоны, блин) не заморочились про ботов.
А микросекунды я не собираюсь экономить. Может потому у тебя и не работает нормально что ты уже в системе наоптимизировал...
у меня мощный комп ... ничего не оптимизировал :( ... даже и не умею это делать :( ... 32 гига оперативной памяти !!! ... Процессор Intel® Core™ i7-7700K (4500 мгц тактовая частота) ... 100 мбит инет ...
и, да, ИЗЮМИНКА моя ЗАМЕЧАТЕЛЬНАЯ !!! - SSD накопитель A-DATA XPG GAMMIX S11, 480Гб, M.2 2280, PCI-E x4, NVMe (очень быстрый !!!)
ну, пожалуйста, ткни ... что ещё можно выкинуть из этого текста без проблем !!!
Скрытый текст
// FullName : Мегафон-JSON
// ShortName : MgfJSON
// Version : 18.10.2019
// Icon : 789C73F235636100033320D600620128666450804840E591C1FFFFFFB1E237DF1F32CCBF91C7B0F66E13C3D3AFD771AA43C63FFE7C6688D8C5CC10B69381E1FCEB6D601A19171ED1C0A9F7CCAB4D286AB1E987E15B1F8EA1E9FF87A1069F7E10FEF7FF2F5C7FDC5E1E9CFA41F265C7F4C1EA57DDA963C838280516CB3C2803D78FCD7C64FDFD1743C1F4D9D79B196A4E5AC0F5806850D8E2D38F0F5F7EBB8761F59D7AAC725B1FF4E1751F084FBF92C8B0FDD124BC76E0D33FE95214C3B73F1F71EA8BDDC385573FC88FB8E441E2317B38F0EA87F96FF2A56892DD0F731BA130C225F7EFFF1F14FDBFFE7E235AFFA5B7BB71E683C5378B71EA8FD9C389926E09E10B6F7680E9EBEF0FE1540300F7C7D83E
// Author : y-greek на основе 'leha3d (Pasha edit)' от 23.07.2019 и 28.01.2019
// Types : y-greek на основе 'leha3d (Pasha edit)' от 23.07.2019 и 28.01.2019
// Descript : Баланс Мегафона с ручным вводом капчи
function main(){
var pageN = 0;
// wait browser
function wb() { while(ie.busy) external.sleep(100); }
function a(e){ window.alert(e); }
// главная мантра победы
ie = external.newActiveXObject("InternetExplorer.Application");
ie.Visible = true;
ie.Navigate("https://lk.megafon.ru/login/");
wb();
var doc = ie.document;
// заполняем login/password
if(doc.all.j_username) {
doc.all.j_username.value=request.loginValue;
doc.all.j_password.value=request.passwValue;
}
// ждём входа в lk
tmp = doc.title;
while (doc.title == tmp) external.sleep(200);
wb();
external.sleep(200);
response.pages[pageN++] = doc.documentElement.outerHTML;
// Баланс
html=doc.documentElement.outerHTML;
regexp=/<i class=.lk_svg lk_svg_user_balans.><.i><p>.*?<.p>/;
// Если есть кредит, то запрашивать баланс без кредита
regexp2=/<div class=.gadget_account_block.><p>Баланс<.p><h4>.*?<.h4>/;
if (res=regexp2.exec(html)) {
tmp=res[0].replace(/ | |\xA0/g, ""); // Удаляем пробелы
tmp=tmp.replace(",", "."); // Заменяем запятую на точку
tmp=tmp.replace(/<div.*<h4>/gm, "");
tmp=tmp.replace(/\u2212/, "-"); // Корректировка Unicode минуса
tmp=tmp.replace(/<i(.*)red.>/gm, ""); // Для отрицательного баланса
response.Balance=parseFloat(tmp);
} else if (res=regexp.exec(html)) {
tmp=res[0].replace(/ | |\xA0/g, ""); // Удаляем пробелы
tmp=tmp.replace(",", "."); // Заменяем запятую на точку
tmp=tmp.replace(/<i.*<p>/gm, "");
tmp=tmp.replace(/\u2212/, "-"); // Корректировка Unicode минуса
tmp=tmp.replace(/<i(.*)red.>/gm, ""); // Для отрицательного баланса
response.Balance=parseFloat(tmp);
};
// Выходим
fin();
function fin() {
ie.Navigate("https://lk.megafon.ru/logout/");
wb();
ie.quit();
}
};
main();
«var pageN = 0;»
«response.pages[pageN++] = doc.documentElement.outerHTML;»
они нужны мне или нет ? ... ещё может что лишнее есть ... пожалуйста ! ... извини, что отвлекаю и, может быть, даже напрягаю :( ...
Спасибо: 0
Профиль
Цитата
Ответить
y-greek
Пост N: 18
Зарегистрирован: 13.03.19
Отправлено: 19.10.19 02:04. Заголовок: sham1975 пишет: fun..
sham1975 пишет:
цитата:
ну, пожалуйста, ткни ... что ещё можно выкинуть из этого текста без проблем !!!
function a(e){ window.alert(e); }
Забыл закомментировать. Это для отладки чтобы быстрее было писать alert.
Кстати, в моём парке на деревянной скамейке было ножом вырезано: "alert('х.й');"
Сразу видно какой крутой чувак накорябал...
Спасибо: 1
Профиль
Цитата
Ответить
sham1975
moderator
Пост N: 78
Зарегистрирован: 27.05.13
Отправлено: 19.10.19 02:10. Заголовок: y-greek пишет: func..
y-greek пишет:
цитата:
function a(e){ window.alert(e); }
Забыл закомментировать. Это для отладки чтобы быстрее было писать alert.
Кстати, в моём парке на деревянной скамейке было ножом вырезано: "alert("х.й");"
Сразу видно какой крутой чувак накорябал...
удалил ... работает ... ИТОГОВЫЙ текст плагина "Получаем ТОЛЬКО БАЛАНС от Мегафона" , значит, пока такой:
Скрытый текст
// FullName : Мегафон-JSON
// ShortName : MgfJSON
// Version : 18.10.2019
// Icon : 789C73F235636100033320D600620128666450804840E591C1FFFFFFB1E237DF1F32CCBF91C7B0F66E13C3D3AFD771AA43C63FFE7C6688D8C5CC10B69381E1FCEB6D601A19171ED1C0A9F7CCAB4D286AB1E987E15B1F8EA1E9FF87A1069F7E10FEF7FF2F5C7FDC5E1E9CFA41F265C7F4C1EA57DDA963C838280516CB3C2803D78FCD7C64FDFD1743C1F4D9D79B196A4E5AC0F5806850D8E2D38F0F5F7EBB8761F59D7AAC725B1FF4E1751F084FBF92C8B0FDD124BC76E0D33FE95214C3B73F1F71EA8BDDC385573FC88FB8E441E2317B38F0EA87F96FF2A56892DD0F731BA130C225F7EFFF1F14FDBFFE7E235AFFA5B7BB71E683C5378B71EA8FD9C389926E09E10B6F7680E9EBEF0FE1540300F7C7D83E
// Author : y-greek на основе 'leha3d (Pasha edit)' от 23.07.2019 и 28.01.2019
// Types : y-greek на основе 'leha3d (Pasha edit)' от 23.07.2019 и 28.01.2019
// Descript : Баланс Мегафона с ручным вводом капчи
function main(){
var pageN = 0;
// wait browser
function wb() { while(ie.busy) external.sleep(100); }
// главная мантра победы
ie = external.newActiveXObject("InternetExplorer.Application");
ie.Visible = true;
ie.Navigate("https://lk.megafon.ru/login/");
wb();
var doc = ie.document;
// заполняем login/password
if(doc.all.j_username) {
doc.all.j_username.value=request.loginValue;
doc.all.j_password.value=request.passwValue;
}
// ждём входа в lk
tmp = doc.title;
while (doc.title == tmp) external.sleep(200);
wb();
external.sleep(200);
response.pages[pageN++] = doc.documentElement.outerHTML;
// Баланс
html=doc.documentElement.outerHTML;
regexp=/<i class=.lk_svg lk_svg_user_balans.><.i><p>.*?<.p>/;
// Если есть кредит, то запрашивать баланс без кредита
regexp2=/<div class=.gadget_account_block.><p>Баланс<.p><h4>.*?<.h4>/;
if (res=regexp2.exec(html)) {
tmp=res[0].replace(/ | |\xA0/g, ""); // Удаляем пробелы
tmp=tmp.replace(",", "."); // Заменяем запятую на точку
tmp=tmp.replace(/<div.*<h4>/gm, "");
tmp=tmp.replace(/\u2212/, "-"); // Корректировка Unicode минуса
tmp=tmp.replace(/<i(.*)red.>/gm, ""); // Для отрицательного баланса
response.Balance=parseFloat(tmp);
} else if (res=regexp.exec(html)) {
tmp=res[0].replace(/ | |\xA0/g, ""); // Удаляем пробелы
tmp=tmp.replace(",", "."); // Заменяем запятую на точку
tmp=tmp.replace(/<i.*<p>/gm, "");
tmp=tmp.replace(/\u2212/, "-"); // Корректировка Unicode минуса
tmp=tmp.replace(/<i(.*)red.>/gm, ""); // Для отрицательного баланса
response.Balance=parseFloat(tmp);
};
// Выходим
fin();
function fin() {
ie.Navigate("https://lk.megafon.ru/logout/");
wb();
ie.quit();
}
};
main();
а эти две строчки, значит, нужны что ли ?
«var pageN = 0;»
«response.pages[pageN++] = doc.documentElement.outerHTML;»
больше ничего нельзя удалить, чтобы работало без проблем ?!
Спасибо: 0
Профиль
Цитата
Ответить
sham1975
moderator
Пост N: 79
Зарегистрирован: 27.05.13
Отправлено: 19.10.19 02:36. Заголовок: рискнул ... удалил и..
рискнул ... удалил и эти две строчки ! ...
«var pageN = 0;»
«response.pages[pageN++] = doc.documentElement.outerHTML;»
...
РАБОТАЕТ быстро и без проблем !!!
...
ИТОГОВЫЙ
текст "суперминимализма" получился таким:
Скрытый текст
// FullName : Мегафон-JSON
// ShortName : MgfJSON
// Version : 18.10.2019
// Icon : 789C73F235636100033320D600620128666450804840E591C1FFFFFFB1E237DF1F32CCBF91C7B0F66E13C3D3AFD771AA43C63FFE7C6688D8C5CC10B69381E1FCEB6D601A19171ED1C0A9F7CCAB4D286AB1E987E15B1F8EA1E9FF87A1069F7E10FEF7FF2F5C7FDC5E1E9CFA41F265C7F4C1EA57DDA963C838280516CB3C2803D78FCD7C64FDFD1743C1F4D9D79B196A4E5AC0F5806850D8E2D38F0F5F7EBB8761F59D7AAC725B1FF4E1751F084FBF92C8B0FDD124BC76E0D33FE95214C3B73F1F71EA8BDDC385573FC88FB8E441E2317B38F0EA87F96FF2A56892DD0F731BA130C225F7EFFF1F14FDBFFE7E235AFFA5B7BB71E683C5378B71EA8FD9C389926E09E10B6F7680E9EBEF0FE1540300F7C7D83E
// Author : на основе 'leha3d (Pasha edit)', 'y-greek' от 28.01.2019, 23.07.2019, 18.10.2019
// Types : на основе 'leha3d (Pasha edit)', 'y-greek' от 28.01.2019, 23.07.2019, 18.10.2019
// Descript : Получаем 'ТОЛЬКО БАЛАНС' от Мегафона с ручным вводом капчи !!!
function main(){
// wait browser
function wb() { while(ie.busy) external.sleep(100); }
// главная мантра победы
ie = external.newActiveXObject("InternetExplorer.Application");
ie.Visible = true;
ie.Navigate("https://lk.megafon.ru/login/");
wb();
var doc = ie.document;
// заполняем login/password
if(doc.all.j_username) {
doc.all.j_username.value=request.loginValue;
doc.all.j_password.value=request.passwValue;
}
// ждём входа в lk
tmp = doc.title;
while (doc.title == tmp) external.sleep(200);
wb();
external.sleep(200);
// Баланс
html=doc.documentElement.outerHTML;
regexp=/<i class=.lk_svg lk_svg_user_balans.><.i><p>.*?<.p>/;
// Если есть кредит, то запрашивать баланс без кредита
regexp2=/<div class=.gadget_account_block.><p>Баланс<.p><h4>.*?<.h4>/;
if (res=regexp2.exec(html)) {
tmp=res[0].replace(/ | |\xA0/g, ""); // Удаляем пробелы
tmp=tmp.replace(",", "."); // Заменяем запятую на точку
tmp=tmp.replace(/<div.*<h4>/gm, "");
tmp=tmp.replace(/\u2212/, "-"); // Корректировка Unicode минуса
tmp=tmp.replace(/<i(.*)red.>/gm, ""); // Для отрицательного баланса
response.Balance=parseFloat(tmp);
} else if (res=regexp.exec(html)) {
tmp=res[0].replace(/ | |\xA0/g, ""); // Удаляем пробелы
tmp=tmp.replace(",", "."); // Заменяем запятую на точку
tmp=tmp.replace(/<i.*<p>/gm, "");
tmp=tmp.replace(/\u2212/, "-"); // Корректировка Unicode минуса
tmp=tmp.replace(/<i(.*)red.>/gm, ""); // Для отрицательного баланса
response.Balance=parseFloat(tmp);
};
// Выходим
fin();
function fin() {
ie.Navigate("https://lk.megafon.ru/logout/");
wb();
ie.quit();
}
};
main();
y-greek
, что-то ещё можно вырезать без ущерба для работы плагина ?! ... назову его, например, так :) -
"Получаем 'ТОЛЬКО БАЛАНС' от Мегафона с ручным вводом капчи !!!"
пысы: оказывается, как мало надо было текста для решения проблемы с капчей ! :) ... ОГРОМНОЕ СПАСИБО !!!
Спасибо: 0
Профиль
Цитата
Ответить
y-greek
Пост N: 19
Зарегистрирован: 13.03.19
Отправлено: 19.10.19 02:41. Заголовок: sham1975 пишет: а э..
sham1975 пишет:
цитата:
а эти две строчки, значит, нужны что ли ?
«var pageN = 0;»
«response.pages[pageN++] = doc.documentElement.outerHTML;»
Не нужны. И просто методом тыка можно было проверить нужны или нет.
Спасибо: 0
Профиль
Цитата
Ответить
sham1975
moderator
Пост N: 80
Зарегистрирован: 27.05.13
Отправлено: 19.10.19 03:36. Заголовок: y-greek пишет: Не н..
y-greek пишет:
цитата:
Не нужны. И просто методом тыка можно было проверить нужны или нет.
методом тыка, конечно, можно ... повезло, работает ... но иногда удалишь то, се ... и не можешь потом понять, что не так, к сожалению ... всё-таки, вы профи, ваше "детище", уж вы то точно знаете, что к чему ! ... лучше, если есть возможность, уточнить у автора, что да как и для чего ...
y-greek
, в итоговом тексте ещё можно что-то вырезать без ущерба ?! ... и, учитывая, высокую общую производительность моего компьютера и стабильный интернет , может мне и задержки и не нужны от слова совсем ... значения всякие, типа external.sleep(200) и подобные им, критичны ?! ... может и ждать мне ничего не надо особо ? ... подозрения в ботоводстве со стороны мегафона, полагаю, мне не особо будут грозить - один запрос в сутки значения баланса не шибко их испугает ! :)
на всякий случай и в этом сообщении продублирую ИТОГОВЫЙ вариант плагина "Получаем 'ТОЛЬКО БАЛАНС' от Мегафона с ручным вводом капчи !!!" :
Скрытый текст
// FullName : Мегафон-JSON
// ShortName : MgfJSON
// Version : 18.10.2019
// Icon : 789C73F235636100033320D600620128666450804840E591C1FFFFFFB1E237DF1F32CCBF91C7B0F66E13C3D3AFD771AA43C63FFE7C6688D8C5CC10B69381E1FCEB6D601A19171ED1C0A9F7CCAB4D286AB1E987E15B1F8EA1E9FF87A1069F7E10FEF7FF2F5C7FDC5E1E9CFA41F265C7F4C1EA57DDA963C838280516CB3C2803D78FCD7C64FDFD1743C1F4D9D79B196A4E5AC0F5806850D8E2D38F0F5F7EBB8761F59D7AAC725B1FF4E1751F084FBF92C8B0FDD124BC76E0D33FE95214C3B73F1F71EA8BDDC385573FC88FB8E441E2317B38F0EA87F96FF2A56892DD0F731BA130C225F7EFFF1F14FDBFFE7E235AFFA5B7BB71E683C5378B71EA8FD9C389926E09E10B6F7680E9EBEF0FE1540300F7C7D83E
// Author : на основе 'leha3d (Pasha edit)', 'y-greek' от 28.01.2019, 23.07.2019, 18.10.2019
// Types : на основе 'leha3d (Pasha edit)', 'y-greek' от 28.01.2019, 23.07.2019, 18.10.2019
// Descript : Получаем 'ТОЛЬКО БАЛАНС' от Мегафона с ручным вводом капчи !!!
function main(){
// wait browser
function wb() { while(ie.busy) external.sleep(100); }
// главная мантра победы
ie = external.newActiveXObject("InternetExplorer.Application");
ie.Visible = true;
ie.Navigate("https://lk.megafon.ru/login/");
wb();
var doc = ie.document;
// заполняем login/password
if(doc.all.j_username) {
doc.all.j_username.value=request.loginValue;
doc.all.j_password.value=request.passwValue;
}
// ждём входа в lk
tmp = doc.title;
while (doc.title == tmp) external.sleep(200);
wb();
external.sleep(200);
// Баланс
html=doc.documentElement.outerHTML;
regexp=/<i class=.lk_svg lk_svg_user_balans.><.i><p>.*?<.p>/;
// Если есть кредит, то запрашивать баланс без кредита
regexp2=/<div class=.gadget_account_block.><p>Баланс<.p><h4>.*?<.h4>/;
if (res=regexp2.exec(html)) {
tmp=res[0].replace(/ | |\xA0/g, ""); // Удаляем пробелы
tmp=tmp.replace(",", "."); // Заменяем запятую на точку
tmp=tmp.replace(/<div.*<h4>/gm, "");
tmp=tmp.replace(/\u2212/, "-"); // Корректировка Unicode минуса
tmp=tmp.replace(/<i(.*)red.>/gm, ""); // Для отрицательного баланса
response.Balance=parseFloat(tmp);
} else if (res=regexp.exec(html)) {
tmp=res[0].replace(/ | |\xA0/g, ""); // Удаляем пробелы
tmp=tmp.replace(",", "."); // Заменяем запятую на точку
tmp=tmp.replace(/<i.*<p>/gm, "");
tmp=tmp.replace(/\u2212/, "-"); // Корректировка Unicode минуса
tmp=tmp.replace(/<i(.*)red.>/gm, ""); // Для отрицательного баланса
response.Balance=parseFloat(tmp);
};
// Выходим
fin();
function fin() {
ie.Navigate("https://lk.megafon.ru/logout/");
wb();
ie.quit();
}
};
main();
СПАСИБО ОГРОМНОЕ за ПОМОЩЬ и ТРУД !!!
Спасибо: 0
Профиль
Цитата
Ответить
y-greek
Пост N: 20
Зарегистрирован: 13.03.19
Отправлено: 19.10.19 04:33. Заголовок: sham1975 пишет: всё..
sham1975 пишет:
цитата:
всё-таки, вы профи
Я не профи.
Но немножко подвизался... И Ваш интерес к программированию однозначно приветствую. Но лучше в личку.
Спасибо: 0
Профиль
Цитата
Ответить
sham1975
moderator
Пост N: 81
Зарегистрирован: 27.05.13
Отправлено: 19.10.19 04:52. Заголовок: y-greek пишет: Я не..
y-greek пишет:
цитата:
Я не профи.
Но немножко подвизался... И Ваш интерес к программированию однозначно приветствую. Но лучше в личку.
ни фига себе "немножко подвизался" ! ... я в программировании полный ноль и интереса особого нет ... прога удобная, вот и сам напрягаюсь и других напрягаю :( ... особо и не понимаю, откуда вы всё это достаёте у мегафона и прочих "опсосов" ?! ... а почему лучше в личку ?! ... модераторов тут, слава богу, вроде нет ... пиши сколько влезет, никто не запрещает :) ... вообще, хорошо, что сайт живой ... не было бы его, то фиг бы кто помог с решением возникающих "палок в колёса" :(
пысы: ну, и, всё-таки, в итоговом тексте ещё можно что-то вырезать лишнее ? ... хотя, конечно, и в таком виде уже текста особо и не осталось :)
« var doc = ie.document; » - эта строчка нужна ?
Спасибо: 0
Профиль
Цитата
Ответить
comprech
Пост N: 64
Зарегистрирован: 24.03.16
Отправлено: 19.10.19 07:48. Заголовок: var doc = ie.document;
sham1975 пишет:
цитата:
« var doc = ie.document; » - эта строчка нужна ?
Нужна, т.к. далее по тексту идут многократные обращения к переменной doc.
sham1975
, как браузер по твоему скрипту понимает, что надо открыть страницу по кнопке войти после программного заполнения логина и пароля? Не вижу команды на это действие между операцией заполнения логина/пароля и извлечением данных из исходного кода веб-страницы. Или сам мышкой нажимаешь кнопку в браузере?
Спасибо: 1
Профиль
Цитата
Ответить
y-greek
Пост N: 21
Зарегистрирован: 13.03.19
Отправлено: 19.10.19 12:21. Заголовок: comprech пишет: sha..
comprech пишет:
цитата:
sham1975, как браузер по твоему скрипту понимает, что надо открыть страницу по кнопке войти после программного заполнения логина и пароля?
А дальше ручками надо капчу ввести.
Спасибо: 1
Профиль
Цитата
Ответить
sham1975
moderator
Пост N: 82
Зарегистрирован: 27.05.13
Отправлено: 19.10.19 15:36. Заголовок: вот и всё :) ... стр..
вот и всё :) ... строчку с « var doc = ie.document; » оставил ... ОКОНЧАТЕЛЬНЫЙ текст плагина "Получаем 'ТОЛЬКО БАЛАНС' от Мегафона с ручным вводом капчи !!!" :
Скрытый текст
// FullName : Мегафон
// ShortName : MgfBal
// Version : 18.10.2019
// Icon : 789C73F235636100033320D600620128666450804840E591C1FFFFFFB1E237DF1F32CCBF91C7B0F66E13C3D3AFD771AA43C63FFE7C6688D8C5CC10B69381E1FCEB6D601A19171ED1C0A9F7CCAB4D286AB1E987E15B1F8EA1E9FF87A1069F7E10FEF7FF2F5C7FDC5E1E9CFA41F265C7F4C1EA57DDA963C838280516CB3C2803D78FCD7C64FDFD1743C1F4D9D79B196A4E5AC0F5806850D8E2D38F0F5F7EBB8761F59D7AAC725B1FF4E1751F084FBF92C8B0FDD124BC76E0D33FE95214C3B73F1F71EA8BDDC385573FC88FB8E441E2317B38F0EA87F96FF2A56892DD0F731BA130C225F7EFFF1F14FDBFFE7E235AFFA5B7BB71E683C5378B71EA8FD9C389926E09E10B6F7680E9EBEF0FE1540300F7C7D83E
// Author : на основе 'leha3d (Pasha edit)', 'y-greek' от 28.01.2019, 23.07.2019, 18.10.2019
// Types : на основе 'leha3d (Pasha edit)', 'y-greek' от 28.01.2019, 23.07.2019, 18.10.2019
// Descript : Получаем 'ТОЛЬКО БАЛАНС' от Мегафона с ручным вводом капчи !!!
function main(){
// wait browser
function wb() { while(ie.busy) external.sleep(100); }
// главная мантра победы
ie = external.newActiveXObject("InternetExplorer.Application");
ie.Visible = true;
ie.Navigate("https://lk.megafon.ru/login/");
wb();
var doc = ie.document;
// заполняем login/password
if(doc.all.j_username) {
doc.all.j_username.value=request.loginValue;
doc.all.j_password.value=request.passwValue;
}
// ждём входа в lk
tmp = doc.title;
while (doc.title == tmp) external.sleep(200);
wb();
external.sleep(200);
// Баланс
html=doc.documentElement.outerHTML;
regexp=/<i class=.lk_svg lk_svg_user_balans.><.i><p>.*?<.p>/;
// Если есть кредит, то запрашивать баланс без кредита
regexp2=/<div class=.gadget_account_block.><p>Баланс<.p><h4>.*?<.h4>/;
if (res=regexp2.exec(html)) {
tmp=res[0].replace(/ | |\xA0/g, ""); // Удаляем пробелы
tmp=tmp.replace(",", "."); // Заменяем запятую на точку
tmp=tmp.replace(/<div.*<h4>/gm, "");
tmp=tmp.replace(/\u2212/, "-"); // Корректировка Unicode минуса
tmp=tmp.replace(/<i(.*)red.>/gm, ""); // Для отрицательного баланса
response.Balance=parseFloat(tmp);
} else if (res=regexp.exec(html)) {
tmp=res[0].replace(/ | |\xA0/g, ""); // Удаляем пробелы
tmp=tmp.replace(",", "."); // Заменяем запятую на точку
tmp=tmp.replace(/<i.*<p>/gm, "");
tmp=tmp.replace(/\u2212/, "-"); // Корректировка Unicode минуса
tmp=tmp.replace(/<i(.*)red.>/gm, ""); // Для отрицательного баланса
response.Balance=parseFloat(tmp);
};
// Выходим
fin();
function fin() {
ie.Navigate("https://lk.megafon.ru/logout/");
wb();
ie.quit();
}
};
main();
работает всё быстро и без нареканий :) ... у меня так ... после запроса по телефону моментально всплывает автоматически окно браузера с уже введёнными плагином логином и паролем, далее я вручную ввожу капчу из шести цифр, указанных в капче, и после ввода капчи нажимаю энтер ... после этого окно браузера практически моментально (у меня) закрывается, а в программе и в БД программы уже есть полученный плагином ТОЛЬКО БАЛАНС !!! УРА !!!
ОГРОМНОЕ ВСЕМ СПАСИБО !!!
Спасибо: 0
Профиль
Цитата
Ответить
pasha
Пост N: 54
Зарегистрирован: 21.09.17
Отправлено: 20.10.19 11:54. Заголовок: y-greek, спасибо! sh..
y-greek
, спасибо!
sham1975
, и всё же попробуй проверить работу плагина на других ПК
leha3d
пишет:
цитата:
Кто-нибудь проверял?
Хотел проверить, но моих знаний не хватило для этого.
Судя по тексту
плагина
, они косят под мобильный ЛК мегафона: меняют юзерагент, получают токен с помощью которого получают доступ в ЛК
Спасибо: 1
Профиль
Цитата
Ответить
sham1975
moderator
Пост N: 83
Зарегистрирован: 27.05.13
Отправлено: 20.10.19 15:53. Заголовок: pasha пишет: sham19..
pasha пишет:
цитата:
sham1975, и всё же попробуй проверить работу плагина на других ПК
До других ПК я точно не скоро доберусь ... Меня весьма устроил и "сборный" вариант, получившийся в итоге :) ... Всё-таки, мне проще ... Необходимо только получение баланса для отслеживания "сроков" в БД :)
Ещё раз СПАСИБО !
Спасибо: 0
Профиль
Цитата
Ответить
sham1975
moderator
Пост N: 85
Зарегистрирован: 27.05.13
Отправлено: 13.11.19 22:15. Заголовок: апну тему ... а то &..
апну тему ... а то "ауты" спамом рекламным форум "загадили" :(
Спасибо: 0
Профиль
Цитата
Ответить
y-greek
Пост N: 22
Зарегистрирован: 13.03.19
Отправлено: 13.11.19 22:36. Заголовок: sham1975 пишет: апн..
sham1975 пишет:
цитата:
апну тему ... а то "ауты" спамом рекламным форум "загадили" :(
А по-русски, или по-английски (не на суржике), или по сути..? А то ничего не понял.
Спасибо: 0
Профиль
Цитата
Ответить
Ответов - 222 , стр:
1
2
3
4
5
6
7
8
9
10
11
12
All
[
только новые
]
Ответ:
1
2
3
4
5
6
7
8
9
показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:
зарегистрироваться
Форум
»
»
Костыль для Мегафона.
Переход по разделам форума
Архив
перенос
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT
3
час. Хитов сегодня:
4
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация вкл, правка нет
Создай свой форум на сервисе Borda.ru
Форум находится на
73
месте в рейтинге
Текстовая версия