miltorg Вы ещё ничего не доказали и не сказали относительно того какие законы нарушает данный топик и вряд ли сможете. И ваш преждевременный нарочитый восторг с бугагашечками тут неуместен.
Тут в открытую предлагают услуги по взлому сайтов.
А напишите конкретно ваши фамилии и конкретно - что вы предлагаете - неправомерный доступ к информации хранящейся на сайте с помощью взлома Капч.
Голубчик, бремя доказывания лежит на истце или стороне с притязаниями. Могу лишь вас уведомить, что существует ответственность за заведомо ложных донос, а также в ГК прописана недопустимость осуществления гражданских прав с намерением причинить вред другому лицу. Удачи.
miltorg Так напишите заявление в полицию с жалобой, что кто-то безжалостно разгадывает вашу капчу. Когда получите официальный ответ "нет признаков уголовного правонарушения" вместе посмеёмся.
Раз прецедента по такому вопросу ещё не было, то вы ведёте беспредметный разговор. Попробуйте озвучить свою проблему на одном известном российском юридическом форуме. Там для людей, которые ничего не понимают в законах, но самоотверженно пытаются качать права, существует специальный раздел для любителей изобрести альтернативную теорию права. Если удача и там отвернётся, пишите сразу в спортлото ;)
блин чот проблема возникает ...Не хотит принимать массив аргументов в
Не туда… совсем
Ладно, если передать объект по твоему способу с внедрением, то так
[spoiler][code]
var obj_inject = {
'canvas':{
'r': 0,
'g': 3,
'b': -4,
'a': 2
}
};
var canvas_inject = function (obj) {
const toBlob = HTMLCanvasElement.prototype.toBlob;
const toDataURL = HTMLCanvasElement.prototype.toDataURL;
const getImageData = CanvasRenderingContext2D.prototype.getImageData;
var noisify = function (canvas, cont) {
const shift = obj;
const width = canvas.width, height = canvas.height;
const imageData = getImageData.apply(cont, [0, 0, width, height]);
for (let i = 0; i < height; i++) {
for (let j = 0; j < width; j++) {
const n = ((i * (width * 4)) + (j * 4));
imageData.data[n + 0] = imageData.data[n + 0] + shift.r;
imageData.data[n + 1] = imageData.data[n + 1] + shift.g;
imageData.data[n + 2] = imageData.data[n + 2] + shift.b;
Так в параметрах вызова же… :/
var obj_inject = { 'canvas':{ 'r': 0, 'g': 3, 'b': -4, 'a': 2 } }; var inject = function(obj) { window.console.log(obj) }; inject(obj_inject);
В чём конечная цель?
---------UPD
Чем пытаться внедрять скрипт текстом лучше юзайте wrappedJSObject чтобы получить доступ к пространству имён скриптов текущей страницы
//В макросе выполняем var win = window.content.document.defaultView.wrappedJSObject; win.inject = function() { window.console.log("test"); }; //В консоле по Ctrl + Shift + k вызываем для проверки inject();
BondM
Несколько классов элемента в данном методе указывается через точку вот так
var time = window.document.querySelector('.plyr__controls__item.plyr__time--duration.plyr__time').innerText; window.console.log(time)
var time = window.document.querySelector('.plyr__controls__item.plyr__time--duration.plyr__time').innerText; window.console.log(time) var a = time.split(':'); var seconds = (+a[0]) * 60 + (+a[1]); window.console.log(seconds); iimPlayCode('WAIT SECONDS='+seconds);
При помощи JS
Gergi
Раньше решалось about:config
Попробуйте это
iimPlayCode('TAG POS=1 TYPE=TEXTAREA FORM=ID:write_form ATTR=NAME:message CONTENT=' + 'aaa<BR>bbb');
InfSub, я на цикл не смотрел, т.к. он там вообще неуместен в таком виде. Наличие try{...} catch{...} не смутило? ;)
А так, вполне обыденная практика генерировать так динамические регулярки.
Судя по коду ему нужно при листинге страниц извлекать из pathname уникальный ник и подставлять его в регулярку,
с помощью которой он собирает в массив ссылки со страницы соответствующие нужному паттерну включающему ник.
Естественно, конечно оптимально было бы сразу собрать в коллекцию все ссылки методом querySelectorAll('a'); и согласен по поводу test()
var arr = []; var url = window.location.pathname.substr(1); var nodes = window.document.querySelectorAll('a'); var re = new RegExp(url + '/status\\.\\d+', 'i'); for (i=0;i<nodes.length;i++) { var link = nodes[i].href; if (re.test(link)) arr.push(link); } window.console.log(arr);
Алим
Примерно так
Заранее в текст вбейте символ переноса строки в нужные места
Есть же примеры
var tx = ['Данное сообщение пишем с \nновой \n\n\nстроки']; var txarea = window.document.querySelector('textarea[class^="message"]'); txarea.value = tx[0];
saurbeck
var text = ['Данное сообщение пишем с новой строки']; iimPlayCode('TAG POS=1 TYPE=TEXTAREA FORM=ACTION:* ATTR=CLASS:message* CONTENT="'+ text[0].replace(/\s/g, '\r\n') +'"');
И вам тоже дай бог здоровья (от агностика)! ;)
По поводу десктопа всё можно, есть множество гайдов, в том числе статей на хабре.
По запросу "desktop js" в выдаче гуугла много статей по этой тематике. Сам таким не занимался поскольку с JS мне на данный момент удобнее работать браузерно, где реализовано много технологий и API дающих дополнительный набор возможностей. Опять же иногда помогают готовые расширения для Firefox.
Но в любом случае для начала необходимо ознакомиться с основами javascript
Для отладки запроса
var XMLHttpRequest = Components.Constructor("@mozilla.org/xmlextras/xmlhttprequest;1");
Ваприанты:
- Токенизация
- Проверка рефёрера на сервере
- Отправка из средств разработчика не всегда корректно работает
Составляйте запрос вручную через конструктор XMLHttpRequest.
В настройки инструментов разработчика зайдите и включите непрерывные логи "Enable persistent logs"
Вы сами должны определить какие данные отправляются при взаимодействии со страницей и найти нужные запросы.
Потом пробуйте имитировать запрос через XMLHttpRequest с необходимыми заголовками и параметрами.
Не видя страницы перед глазами со всеми событиями и подключенными скриптами, помощь вам будет схожа с сеансом телепатии. Тут слишком много "если".
Это только заголовки. Содержимое в "Params".
Вы вначале запрос найдите, который идёт на сервер при изменении цены.
Хотя бы по фильтру XHR отсортируйте на панели.
В Firefox Ctrl + Shift + E
или F12 -> вкладка "Сеть"
Выше ссылку давал о типе данных и преобразовании типов. Читайте до понимания.
Прежде чем осуществлять арифметические действия, убедитесь, что значения переменных приведены к правильному типу (number).
Вам уже объяснил аналогичную вашу ошибку
Не гадайте. Потратьте 30 минут на изучение селекторов
pricetax.match is not a function потому что pricetax у вас это уже число а не строка. Метод match() работает со строками а не числами
var pricetax = "8.496434";// Сейчас строка window.console.log(pricetax.match(/\d+\.\d{2}/)[0]); // Или преобразуем число в строку с помощью метода String() var pricetax = 8.496434;// Сейчас число window.console.log(String(pricetax).match(/\d+\.\d{2}/)[0]);
проверка имени продавца, или идентификация себя по этому имени
Одним циклом всё это сортируете по условию в объект, а потом сравниваете.
…ну дело в том что мне не просто нужно получить самую верхнюю цену, а чтобы эта цена соответствовала моим критериям
1 data-server=9792
2 data-side=52
3 data-online=1
Вы плохо ознакомились с предложенными мануалами.
Пишете селекторы атрибутов без пробелов, чтобы получить только ноды соответствующие значениям data-server="9792", data-side="52" и data-online="1"
Собираете в массив все цены из полученных нод и находите минималную цену
var nodes = window.document.querySelectorAll('[data-server="9792"][data-side="52"][data-online="1"]'); var arr = []; for (i=0;i<nodes.length;i++) { var price = nodes[i].querySelector('.text-right>div').textContent; // Собираем в массив "arr" значения преобразованные к числу arr.push(+price.match(/[0-9.]+/)[0]); } // Отфильтровываем из массива "arr" минимальное число var min_price = Math.min.apply(Math, arr); // Смотрим в консоль window.console.log(arr); window.console.log(min_price);