0 Пользователей и 1 Гость просматривают эту тему.
  • 40 Ответов
  • 7678 Просмотров
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Как прикрепить заранее подготовленный файл в поле:
Код
<input type="file" name="file">
Посредством JavaScript? Понятно, что политика безопасности запрещает это, но как обстоят дела с расширениями для Chrome?

1. Например, нельзя ли никак через API браузера воткнуть локальный файл из chrome-extension://ijjoohphccpobepcdmjdonjbadmkjiph/test.pdf который предварительно пропишем в манифесте? Если вдруг да, то как это сделать?

2. Может быть можно как-то кешировать выбор файла, чтобы при обновлении страницы выбранный в input файл не слетал? С полям же можно.

3. Возможно есть какие-либо способы кастрировать браузер, чтобы все это политики безопасности прекратили действовать и таки дали мне возможность вставить файл? Это для личного пользования и кастрировать браузер для меня приемлемо, только знать бы как.

Прощу помощи, любые ваши идеи, как обойти защиту и все таки реализовать авто выбор файла в браузере Chrome. Готов материально поблагодарить за рабочий совет.

Хочу написать js-бота для госазаупок и мне критически важно наделить бота возможностью крепить файлы в формы. Заранее говорю, что варианты вроде зеннопостера и аймакрос не подходят!

P. S. Вопрос решен, решение ниже:

Оказывается ранее выбранные файлы вполне себе можно вставлять в поле input средствами JavaScript в том числе и в поля, которые находятся внутри iframe.

Например, если в родительском окне мы выбрали файл, то информацию о нем можно записать в переменную, а потом передавать внутрь iframe столько раз, сколько надо:
Код
filelink = document.querySelector('input').files;
document.querySelector('iframe').contentWindow.document.querySelector('input').files = filelink;
Соответственно ни что не мешает бота выполнять внутри фрейма, без перезагрузки родительского окна.
« Последнее редактирование: 30.09.2019, 10:24:49 от dm-krv »
*

ProtectYourSite

  • Живу я здесь
  • 2356
  • 135 / 4
  • Безопасность вебсайтов
*

sivers

  • Живу я здесь
  • 2464
  • 336 / 0
2. Может быть можно как-то кешировать выбор файла, чтобы при обновлении страницы выбранный в input файл не слетал?
Может тогда не обновлять страницу, а отправку делать аяксом? Один раз выбрать придется, а дальше поле будет с выбранным файлом. Его (по идее) даже в другие формы подтыкать можно будет.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
А что мешает самому отправлять форму ?

Я практически уверен, что нельзя просто взять и отправить форму самому на госзакупках) Скорее-все там очень хорошая защита, со всякими токенами, ключами и т. д. и т. п. Сгенерированная мной форма просто не пройдет проверку, а разбор внутренней логики уйдет неоправданного много сил, да и то не факт, что все секреты разгадаю.

Если не найду простого способа вставлять файлы, предпочту просто не связываться с этим заказом.
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Может тогда не обновлять страницу, а отправку делать аяксом? Один раз выбрать придется, а дальше поле будет с выбранным файлом. Его (по идее) даже в другие формы подтыкать можно будет.

Я бы рад, но как я предполагаю, форма просто не пройдет проверку безопасности при повторной отправке и т. д.
*

ProtectYourSite

  • Живу я здесь
  • 2356
  • 135 / 4
  • Безопасность вебсайтов
Через Js  никак, максимум можно поизвращаться, вызвать поле выбора файла и потом через какой внешний кликер тыкнуть по определенным координатам и заатачить файл
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Через Js  никак, максимум можно поизвращаться, вызвать поле выбора файла и потом через какой внешний кликер тыкнуть по определенным координатам и заатачить файл

Мне интуиция говорит, что расширения должны такое уметь, но я не знаю что именно искать и как называется нужная мне фишка, в этом проблема(

Дело в том, что тот же iMacros существует в виде расширения для браузеров и в нем есть функционал вставки файла в поле, а значит это все часть API Chrome и мою задачу однозначно можно решить через создание браузерного расширения, знать бы только КАК.
« Последнее редактирование: 29.09.2019, 22:04:49 от dm-krv »
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Не понял, что вы хотите сделать.
Я практически уверен, что нельзя просто взять и отправить форму самому на госзакупках)
А бот может?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Не понял, что вы хотите сделать.А бот может?

Уже готовую форму с правильными секретными ключами? Конечно да, ведь кликнуть кнопку отправки много ума не надо, а дальше скрипты на странице все сами сделают.
*

ProtectYourSite

  • Живу я здесь
  • 2356
  • 135 / 4
  • Безопасность вебсайтов
А что там такого сложного в этих секретных ключах ?
Через расширение как я понял можно append файла к форме сделать
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Уже готовую форму с правильными секретными ключами? Конечно да, ведь кликнуть кнопку отправки много ума не надо, а дальше скрипты на странице все сами сделают.
Все равно не понял.
Вы хотите написать бот, который будет лазить по госзакупкам и отправлять подготовленный вами файл, так, что ли?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
А что там такого сложного в этих секретных ключах ?
Через расширение как я понял можно append файла к форме сделать

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

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Все равно не понял.
Вы хотите написать бот, который будет лазить по госзакупкам и отправлять подготовленный вами файл, так, что ли?

Да, к откликам на тендеры надо файлы свои крепить. Если поля заполнять по шаблону не проблема, то с выбором файла затык. Там кто быстрее отклик дал, того и тендер, хрен знает почему так. Соответственно заказчик хочет быстрого бота, который будет делать то, что не может человек - быстро давать отклики.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Как прикрепить заранее подготовленный файл в поле
если я правильно понял о чем речь, то нет, этого сделать нельзя, в том числе в плагине. js не имеет доступа к файловой системе. ну по крайней мере не в том виде, в котором он нужен вам.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Делайте, как @sivers посоветовал - AJAX'ом форму отправлять, предварительно сохранив файл в storage.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
если я правильно понял о чем речь, то нет, этого сделать нельзя, в том числе в плагине. js не имеет доступа к файловой системе. ну по крайней мере не в том виде, в котором он нужен вам.

Но расширения то в теории доступ такой имеют! Где бы только прочитать примеры?
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Делайте, как @sivers посоветовал - AJAX'ом форму отправлять, предварительно сохранив файл в storage.

Как крайний вариант, но в идеале хотелось бы решение именно для вставки файлов. Ох, как бы это упростило в будущем конструирование ботов, уже не первый раз сталкиваюсь с такой необходимостью, а решения нет. Может быть в природе существуют кастрированные сборки Chrome/Chromium? Это бы тоже решило проблему.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Но расширения то в теории доступ такой имеют
нет
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
нет

Изучил тему. Действительно, оказываются те расширения, которые якобы дают доступ к ФС на самом деле делают это не напрямую, а через установку дополнительного внешнего модуля-программы, которое и обеспечивает взаимодействие между расширением и файлами на ПК. Признаю, был не прав.
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Может тогда не обновлять страницу, а отправку делать аяксом? Один раз выбрать придется, а дальше поле будет с выбранным файлом. Его (по идее) даже в другие формы подтыкать можно будет.

@sivers твой ответ считаю наиболее полезным. Как вариант, я буду просто каждый раз менять обвязку вокруг поля с выбранным файлом, а сам input будет всегда один и тот же. Напиши мне свой Яндекс кошелек, Qiwi или телефон, можно как сюда, так и в личку. С меня причитается.
*

sivers

  • Живу я здесь
  • 2464
  • 336 / 0
Как вариант, я буду просто каждый раз менять обвязку вокруг поля с выбранным файлом
Я проверил, поле с выбранным файлом можно даже клонировать, и в клоне файл так же выбран. Можно также скопировать выбранный файл из одного поля в другое (где он еще не выбран или выбран другой), только не знаю где это можно использовать.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
угу, после вставки можно делать что угодно. проблема в том что вставить нельзя :) ну нет доступ у js к локальной файловой системе, это уровень самого браузера. но самом отправить форму, указав что нужно, ессно никто не запрещает. у плагина на странице будет полный доступ к дом, поэтому всякие там csrf токены и прочее, что нужно для отправки - ко всему будет доcтуп. останется только один разок отправить реальную форму, посмотреть параметры которые уходят, и затем повторить это программно
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Можно также скопировать выбранный файл из одного поля в другое (где он еще не выбран или выбран другой), только не знаю где это можно использовать.

А вот это вот как сделать? Возможно внутрь фрейма удастся передать файл.
*

sivers

  • Живу я здесь
  • 2464
  • 336 / 0
А вот это вот как сделать?

Код
document.getElementById('#inpDest').files = document.getElementById('#inpSource').files;
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

stendapuss

  • Давно я тут
  • 945
  • 20 / 0
  • Valera Stankevich
Мне интуиция говорит, что расширения должны такое уметь, но я не знаю что именно искать и как называется нужная мне фишка, в этом проблема(

Дело в том, что тот же iMacros существует в виде расширения для браузеров и в нем есть функционал вставки файла в поле, а значит это все часть API Chrome и мою задачу однозначно можно решить через создание браузерного расширения, знать бы только КАК.
А зачем расширение делать? iMacros все делает. Записал команду  iMacros, там есть такая функция, подправил сделал файл и в перед. На Mozilla Firefox лучше работает. Во всяком случае бесплатная (старая версия  iMacros и Mozilla Firefox ).
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Код
document.getElementById('#inpDest').files = document.getElementById('#inpSource').files;

Хмм... Надо проверить как это с фреймами работает, если норм, то это полностью решает проблему. Отпишусь.
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
А зачем расширение делать? iMacros все делает. Записал команду  iMacros, там есть такая функция, подправил сделал файл и в перед. На Mozilla Firefox лучше работает. Во всяком случае бесплатная (старая версия  iMacros и Mozilla Firefox ).

Ключевое слово - старая версия) Старая мозила глючная по нынешнем временам, да и по ЭЦП авторизацию там не прикрутишь, нужен свежий Chrome. А так вариант хороший, если бы не цена лицензии, аж 7000 руб. за плагин для личного использования.
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Код
document.getElementById('#inpDest').files = document.getElementById('#inpSource').files;

Это удивительно, но с фреймами это тоже работает! При этом как в одну сторону, так и в другую.
Код
document.querySelector('iframe').contentWindow.document.querySelector('input.test1').files
= document.querySelector('input.test2').files
Огромное спасибо за наводку, это именно то, что мне надо - ведь бота я вполне могу и во фрейме выполнять.
@sivers Напиши мне в личку свои реквизиты, твой совет наиболее ценный и решающий.
*

sivers

  • Живу я здесь
  • 2464
  • 336 / 0
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Написал

Отправил, еще раз спасибо)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как правильно клонировать коллекцию FileList? [РЕШЕНО]

Автор dm-krv

Ответов: 5
Просмотров: 1000
Последний ответ 12.10.2019, 18:33:11
от dm-krv
Нужно сделать css/javascript анимацию

Автор dm-krv

Ответов: 13
Просмотров: 1104
Последний ответ 17.09.2019, 16:04:31
от dm-krv
Решить проблему зависания страниц при переходе на https (решено)

Автор sega

Ответов: 0
Просмотров: 589
Последний ответ 07.03.2019, 10:14:45
от sega
Как найти и выделить строки с совпадающими ячейками? [ РЕШЕНО ]

Автор dm-krv

Ответов: 10
Просмотров: 691
Последний ответ 01.11.2018, 19:30:17
от dm-krv