Полезная информация

Пользователи не любят читать документацию. Станьте оригинальным, будьте не как все. Ознакомьтесь с нашей базой знаний.

iMacros » Перестал работать скрипт после апдейта сайта » 24-01-2020 23:46:38

Здравствуйте, сайт на котором должен работать мой скрипт к сожалению иногда меняет вид - приходится править код, чтобы облегчить свой труд я храню образцы предыдущей версии сайта что бы можно было сравнить и быстро найти что изменили. Но вот последний раз это мне не помогло, я не могу найти отличий в коде страницы которые мешают работать коду как положено.
Я покажу кусок кода который отвечает за идентификацию самого себя по нику, и добавление моей цены в переменную для дальнейшей работы с ней
[spoiler][code]var macro;
macro =  "CODE:";
var nodes = window.document.querySelectorAll('.tc-item');
    for (i=0;i<nodes.length;i++) {
var node = nodes[i];
var data_server = node.getAttribute('data-server');
var data_side = node.getAttribute('data-side');
var name = node.querySelector('.media-user-name').textContent;
var m_name = "golovin"; //ввожу свой ник (сейчас ввожу любой ник для теста работоспособнисти скрипта, проверить найдет  ли он цену продавца по нику)
var m_price = Number(node.queryS

iMacros » Вытянуть данные при совпадении нескольких условий » 22-09-2019 00:09:14

Спасибо, все работает чётко :D
Теперь от нажатия "Воспроизвести" до того момента когда моя цена окажется вне конкуренции - всего 1.22 секунды!
О такой скорости я даже не мечтал, ведь даже если 30 сек уходило это событие, вручную никто бы не тягался, ну мне интересно было довести дело до конца)
Это мой(ну на 25% точно мой) первый рабочий скрипт!Буду интересоваться тематикой JS и далее, если бы не ваша помощь, я бы скорей всего дал заднюю в этом деле.
Дай бог Вам здоровья!(хоть я и атеист, ну неважно!)За то что тратите свое время на помощь другим безвозмездно!
Подскажите напоследок, если реализовывать подобный софт в виде десктопного приложения, то это делается тоже на JS? или это будет в разы сложнее чем на аймакросе и не стоит потраченного времени? как такую тематику правильно гуглить? Что бы копать хотя бы в нужном направлении)

iMacros » Вытянуть данные при совпадении нескольких условий » 21-09-2019 12:34:45

Вот заголовки этого XHR

скрытый текст
9d55a58e688e.jpg

а вот содержание, в разделе "параметры" выглядит вот так:
скрытый текст
8f705f21d539.jpg
и так далее

в разделе "необработанные данные" вот так [spoiler][code]game=178&chip=118&options%5Bchip_min_sum%5D=100&offers%5B3199%5D%5B54%5D%5Bprice%5D=&offers%5B3199%5D%5B54%5D%5Bamount%5D=&offers%5B3199%5D%5B51%5D%5Bprice%5D=&offers%5B3199%5D%5B51%5D%5Bamount%5D=&offers%5B3199%5D%5B52%5D%5Bprice%5D=&offers%5B3199%5D%5B52%5D%5Bamount%5D=&offers%5B3209%5D%5B51%5D%5Bprice%5D=&offers%5B3209%5D%5B51%5D%5Bamount%5D=&offers%5B3209%5D%5B52%5D%5Bprice%5D=&offers%5B3209%5D%5B52%5D%5Bamount%5D=&offers%5B3230%5D%5B51%5D%5Bprice%5D=&offers%5B3230%5D%5B51%5D%5Bamount%5D=&offers%5B3230%5D%5B52%5D%5Bprice%5D=&offers%5B3230%5D%5B52%5D%5Bamount%5D=&offers%5B3186%5D%5B51%5D%5Bprice%5D=&offers%5B3186%5D%5B51%5D%5Bamount%5D=&offers%5B3186%5D%5B52%5D%5Bprice%5D=&offer

iMacros » Вытянуть данные при совпадении нескольких условий » 20-09-2019 14:27:46

в общем сервер отказывается принимать искусственно отправленный запрос(я никакие параметры его не менял, просто переотправил ранее отправленный запрос) выдает ошибку 403.  "HTTP 403 Forbidden" указывает, что сервер понял запрос, но отказывается его авторизовать
ответ пришел такой:

скрытый текст

Выделить код

Код:

msg: Необходимо авторизоваться
error: 1


осталось мне только понять почему сервер отправленный запрос православным способом принимает за истинный, а в ручную - за не авторизованный (при абсолютно одинаковых запросах по содержанию) как он их отличает? и как соорудить такой запрос, что бы сервер не сомневался в том что я  авторизованный

iMacros » Вытянуть данные при совпадении нескольких условий » 20-09-2019 12:24:14

да я уже вроде бы все запросы перебрал, если не трудно посмотрите сами, я вам ПМ написал данные для авторизации
у меня есть подозрения что вот этот запрос мне нужен,

скрытый текст
c5391b95821f.jpg

Но как его поймать за хвост? ведь он существует в консоли всего долю секунды, скрин я этот сделал с видеозаписи

iMacros » Вытянуть данные при совпадении нескольких условий » 19-09-2019 20:14:16

в первом было написано "No parameters for this request"
а второй, который прилетел спустя 15 сек содержал уже такую инфу

скрытый текст

Выделить код

Код:

objects: [{"type":"orders_counters","id":"97115","tag":"5l1wel5t","data":false},{"type":"chat_counter","id":"97115","tag":"pw47f3m8","data":false}]
request: false
csrf_token: l5tl961n7xlrlikj


но что-то меня смущает что второй прилетел через 10-15 сек после полной загрузки страницы, по этому вполне возможно что "это не то" (мои домыслы)

iMacros » Вытянуть данные при совпадении нескольких условий » 19-09-2019 18:50:37

после изменения цены прилетел вот этот XHR (который GET прилетел через ~секунду, кторый POST через ~10 )

скрытый текст
b3ab693e85e0.jpg

вот содержание первого
скрытый текст
6c4f730b1468.jpg

iMacros » Вытянуть данные при совпадении нескольких условий » 19-09-2019 18:12:46

Squatter пишет

В Firefox Ctrl + Shift + E

или F12 -> вкладка "Сеть"

дело в том что я не нашел в своем запросе "trade" данные которые отвечают за изменение цены

iMacros » Вытянуть данные при совпадении нескольких условий » 19-09-2019 17:58:34

подскажите пожалуйста как это примерно должно выглядеть, я примеров не нашел похожих
сейчас код работает так

скрытый текст

Выделить код

Код:

var XMLHttpRequest=Components.Constructor("@mozilla.org/xmlextras/xmlhttprequest;1");
var b=XMLHttpRequest();
b.open('GET','https://тутURL/chips/118/trade',false);
b.send('');
var body = b.responseText; 
content.document.querySelector('body').innerHTML = body;
        
        iimPlayCode('WAIT SECONDS=0.1');
        window.document.querySelector('[name="offers[3194][52][price]"]').value=pricelast;
        iimPlayCode('WAIT SECONDS=0.1');
        window.document.querySelector('[type="submit"]').click();


я захотел вручную подсмотреть что происходит в момент нажатия кнопки "сохранить" с введенной новой ценой в форму, что бы иметь представление как это должно выглядеть, и какие данные в каком виде отправляются
на одном из сайтов посоветовали "Chrome -> F12 -> Вкладка Network -> Выбираете нужный файл -> Во вкладке Headers ищите строку Form Data"
[spoi

iMacros » Вытянуть данные при совпадении нескольких условий » 18-09-2019 16:37:10

да это я понял, я уже исправил это вот так

скрытый текст

Выделить код

Код:

var m_price = Number(node.querySelector('.text-right>div').textContent.match(/[0-9.]+/)[0]);


но понять почему  с отниманием все в порядке не могу
ведь  я оба значения парсил одинаково, с тем лишь отличием что одна из цен принадлежит мне, а другая кому-то
скрытый текст

Выделить код

Код:

var m_price = (node.querySelector('.text-right>div').textContent.match(/[0-9.]+/)[0]); //идентифицирую свою цену по собственному нику
  if(data_server==3194&&data_side==52&&name==m_name)
и доставал цену продавца
var price = node.querySelector('.text-right>div').textContent.match(/[0-9.]+/)[0];
  if(data_server==3194&&data_side==52&&data_online==1&&name!=m_name){


но почему в конечном результате могло случится так что у них оказались разные типы?(дико извиняюсь если эти вопросы вам покажутся глупыми!)

И есчо: сегодня я для себя открыл такую новинку как GET запрос,  и очумел когда увидел скорость работы своего скрипта на

iMacros » Вытянуть данные при совпадении нескольких условий » 18-09-2019 14:16:19

опять здравствуйте) не могли бы вы мне объяснить как происходит такая магия:

скрытый текст

Выделить код

Код:

var cop = (0.01);// 1 копейка
var cop2 = (0.02);
var verh = (m_price+cop2);// верхний упор (моя цена +2 коп)
var pricetax = (price*tax);
var pricelast = (pricetax-cop);//конечная цена -1 копейка
window.console.log(+pricetax +"-1 копейка = " +pricelast); //проверил как работает отнимание 1 копейки
window.console.log(+m_price +" + " +cop2 +" = " +verh); //проверяю как работает прибавление 2 копеек


две абсолютно аналогичные ситуации, но одна отнимает (правильно), а вторая прибавляет(не совсем правильно)
вот что выдал лог
7.899893999999999-1 копейка = 7.889893999999999
9.14 + 0.02 = 9.140.02
ну я примерно подозреваю что код думает что я пытаюсь сложить квадратное с холодным, но почему отнимание тогда работает как надо??

iMacros » Вытянуть данные при совпадении нескольких условий » 17-09-2019 23:12:24

еще вот так пробовал, не непомогло

скрытый текст

Выделить код

Код:

window.document.getElementsByClassName('input[name=offers[3199][54][price]]').value="TEXT";


потом нашел на форуме инфу что можно через window.document.querySelector
и сделал так
скрытый текст

Выделить код

Код:

window.document.querySelector('input[name=offers[3199][54][price]]').value="TEXT";


но результат прежний(

iMacros » Вытянуть данные при совпадении нескольких условий » 17-09-2019 14:37:12

большое спасибо за предыдущую помощь, не могли бы вы мне еще объяснить как определить правильно форму?
я постоянно чтобы что-то написать на js ищу похожие образцы кода в "интернетах", если точного аналога нету, начинаю перебирать разные варианты из "похожего"
может есть какой браузер/плагин чтобы при наведении на элемент в коде он мне писал "Вася искомый тобой заветный value="102.2" относится к (условно) getElementsByName('offers[3230][52][price]');
мне кажется что мои способы решения моих задач, аналогичны с попыткой езды на велосипеде с квадратными колесами

скрытый текст

Выделить код

Код:

<input class="form-control price" name="offers[3230][52][price]" value="102.25" autocomplete="off" type="text">


я уже перечитал все гайды, в поиске подобного образца, ну не укладывается в моей голове, хочется понять логику раз и навсегда, а не брутить разные варианты "авось щас заработает!"
в этот раз я собраллся найти графу value = которая принадлежит offers[3230][52][price] и заполнить ее по сво

iMacros » Вытянуть данные при совпадении нескольких условий » 16-09-2019 18:07:43

дело в том что "я" уже написал вот такой код
[spoiler][code]
//чекаю свою цену
var nodes = window.document.querySelectorAll('tr[data-href]');
    for (i=0;i<nodes.length;i++) {
var node = nodes[i];
var data_server = node.getAttribute('data-server');
var data_side = node.getAttribute('data-side');
var data_online = node.getAttribute('data-online');
var name = node.querySelector('a').textContent;
var m_name = "godmode";
var m_price = node.querySelector('.text-right>div').textContent.match(/[0-9.]+/)[0];
  if(data_server==3194&&data_side==52&&data_online==1&&name==m_name){//проверка сервак, сторона, онлайн, мой ник         
    window.console.log(m_price);
    //alert(m_price);
  break;}
}
//чекаю чужую самую низкую цену
var nodes = window.document.querySelectorAll('tr[data-href]');
    for (i=0;i<nodes.length;i++) {
var node = nodes[i];
var data_server = node.getAttribute('data-server');
var data_side = node.getAttribute('data-side');
var data_online = node.getAttribute('data-online');

iMacros » Вытянуть данные при совпадении нескольких условий » 16-09-2019 01:43:01

написал break; как вы сказали, теперь консоль пустая совсем

скрытый текст

Выделить код

Код:

var nodes = window.document.querySelectorAll('tr[data-href]');
    for (i=0;i<nodes.length;i++) {
var node = nodes[i];
var data_server = node.getAttribute('data-server');
var data_side = node.getAttribute('data-side');
var data_online = node.getAttribute('data-online');
var name = node.querySelector('a').textContent;
var m_name = "godmode";
var price = node.querySelector('.text-right>div').textContent;
  if(data_server==3194&&data_side==52&&data_online==1&&name!=m_name)//проверяю чтобы все совпадало          
    window.console.log(price.match(/[0-9.]+/)[0]);
    break;
}


мне кажется цикл проверил первый href, там не нашел ничего из того что мне подходит и свернулся break;

iMacros » Вытянуть данные при совпадении нескольких условий » 16-09-2019 01:27:38

консолью я пользуюсь)
и с таким кодом

скрытый текст

Выделить код

Код:

var nodes = window.document.querySelectorAll('tr[data-href]');
    for (i=0;i<nodes.length;i++) {
var node = nodes[i];
var data_server = node.getAttribute('data-server');
var data_side = node.getAttribute('data-side');
var data_online = node.getAttribute('data-online');
var name = node.querySelector('a').textContent;
var m_name = "godmode";
var price = node.querySelector('.text-right>div').textContent;
  if(data_server==3194&&data_side==52&&data_online==1&&name!=m_name)//проверяю чтобы все совпадало          
    window.console.log(price.match(/[0-9.]+/)[0]);
}


я получаю вот такой вот список цен в консоль
скрытый текст

Выделить код

Код:

10.00 
10.01  
10.33 
10.56
11.11 
11.62

iMacros » Вытянуть данные при совпадении нескольких условий » 16-09-2019 01:06:44

я с js как и с программированием в общем знаком 2 дня
если честно я не совсем понимаю что вы написали, а также не совсем понимаю куда это вставлять)

скрытый текст

Выделить код

Код:

/<div>(.*?) ₽<\/div>/


ну дело в том что  мне не просто нужно получить самую верхнюю цену, а чтобы эта цена соответствовала моим критериям
1 data-server=9792
2 data-side=52
3 data-online=1
ну за подсказку с массивом - спасибо, буду дерзать

iMacros » Вытянуть данные при совпадении нескольких условий » 16-09-2019 00:43:20

про кавычки вы правильно подметили, просто в этом коде, такой ошибки нету даже без кавычек

скрытый текст

Выделить код

Код:

var macro;
macro =  "CODE:";
var node = window.document.querySelector('tr[data-href]');
var data_server = node.getAttribute('data-server');
var data_side = node.getAttribute('data-side');
var data_online = node.getAttribute('data-online');
var name = node.querySelector('a').textContent;
var price = node.querySelector('.text-right>div').textContent;
if(data_server==3194&&data_side==52&&data_online==1&&name!=godmode){
window.console.log(price.match(/[0-9.]+/)[0]);
}


по поводу проверки всех чисел чтобы понять какая из них самая низкая :  дело в том что самое первое занесенное число оно всегда самое низкое, потому что сортировка стоит на сайте от большего к меньшему)

iMacros » Вытянуть данные при совпадении нескольких условий » 15-09-2019 23:49:59

хотелось бы извлечь лишь самую дешевую цену, а не все, чтобы потом попробовать запилить проверку по нику "не принадлежит ли эта самая дешевая цена - мне" если цена моя, то обновляем страницу и поновой чекаем, ну а если цена не моя, а "ProdavecVasia" то там уже совсем другая история) туда пока еще я не дошел

скрытый текст

Выделить код

Код:

var macro;
macro =  "CODE:";
var nodes = window.document.querySelectorAll('tr[data-href]');
for (i=0;i<nodes.length;i++) {
  var node = nodes[i];
  var data_server = node.getAttribute('data-server');
  var data_side = node.getAttribute('data-side');
  var data_online = node.getAttribute('data-online');
  var name = node.querySelector('a').textContent;
  var m_name = "godmode";
  var price = node.querySelector('.text-right>div').textContent;
         if(data_server==3194&&data_side==52&&data_online==1&&name!=godmode)//проверяю чтобы все совпадало          
        window.console.log(price.match(/[0-9.]+/)[0]);
}


когда хотел сделать проверку по нику,

iMacros » Вытянуть данные при совпадении нескольких условий » 15-09-2019 12:48:06

спасибо за отклик, вы значительно подвинули меня к конечной цели)
ну я снова остановился на условии else

скрытый текст

Выделить код

Код:

var node = window.document.querySelector('tr[data-href]');
var data_server = node.getAttribute('data-server');
var data_side = node.getAttribute('data-side');
var data_online = node.getAttribute('data-online');
var price = node.querySelector('.text-right>div').textContent;
if(data_server==3194&&data_side==52&&data_online==1){ //проверяю чтобы все совпадало
window.console.log(price.match(/[0-9.]+/)[0]);} //вывожу цену если все ок по моим критериям
else{
тут если не совпадает,  хочу сказать чтобы скрипт проверял дальше, следующий var node, как это правильно писать? что почитать на эту тему?
}

iMacros » Вытянуть данные при совпадении нескольких условий » 15-09-2019 00:23:25

Добрый вечер, я совсем новичек в этом деле, начинаю с самого простого, но уже нужна помощь более опытных)
Помогите пожалуйста мне извлечь данные из сайта при некоторых условиях, а именно:
1 data-server=9792
2 data-side=52
3 data-online=1
если все эти 3 параметра совпадают - тогда нужно цену сохранить в файл, но вообще моя цель это сохранить самую дешевую цену из всех(что попали под 3 мои условия выше) в файл или переменную
  [spoiler][code]<tr data-href="тутURL" data-server="9792" data-side="52" data-online="1">
        <td>ServerAbc</td>
                  <td>Orki</td>
                          <td><div>
                         <a href="тутURL/users/2323/">ProdavecVasia</a>
                     <span class="label label-success">online</span>
                  <a href="тутURL">ProdavecVasia</a> <span class="label label-success">online</span></div><div class="text-muted">на сайте год, 333 отзывов</div></td>                <td class="text-right">
          49        </td>
        <td

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]