<input type="file">
и для обработчиков на целевом сайте все будет выглядеть, будто в поле реально присутствуют файлы, хотя это конечно будет не так.// Пример функции для вставки Blob в поле input:
function pasteBlobToInput(blob, input) {
// Конвертируем Blob в File:
var file = new File([blob], blob.name);
// Создаем коллекцию файлов для последующий вставки:
var file_list = {0: file, length: 1, '__proto__': input['files']['__proto__']};
// Сохраняем прототип поля:
var proto = input['__proto__'];
// Подменяем прототип для разблокировки св-ства files на запись:
input['__proto__'] = document.createElement('div')['__proto__'];
// Записываем коллекцию файлов:
input['files'] = file_list;
// Возвращаем прототип на место:
input['__proto__'] = proto;
// Выводим уведомление:
console.log('Коллекция успешно вставлена:');
console.dir(file_list);
// Заставляем сработать обработчики на поле выбра файлов:
input.dispatchEvent(new InputEvent('change', { bubbles: true }));
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/localforage/1.9.0/localforage.js"></script>
var input = document.createElement('input');
input.setAttribute('type', 'file');
input.setAttribute('multiple', 'multiple');
input.addEventListener('change', async function() {
var files = await localforage.setItem('files', this.files);
console.log('Коллекция файлов успешно сохранена:');
console.dir(files);
});
input.click();
var files = await localforage.getItem('files');
console.log('Коллекция файлов успешно извлечена:');
console.dir(files);
var files = await localforage.getItem('files');
document.querySelector('input[type="file"]').files = files;
var info = 'Какой-нибудь текст';
var dt = new DataTransfer();
dt.items.add(new File([info], 'primer.txt', {type: 'text/plain'}));
var file_list = dt.files;
console.log('Коллекция файлов создана:');
console.dir(file_list);
// Вставим созданную коллекцию в реальное поле:
document.querySelector('input[type="file"]').files = file_list;
<input type="file">
- что просто архиполезно для браузерных ботов.var info = 'Какой-нибудь текст';
var dt = new DataTransfer();
dt.items.add(new File([info], 'primer.txt', {type: 'text/plain'}));
var file_list = dt.files;
console.log('Коллекция файлов создана:');
console.dir(file_list);
// Вставим созданную коллекцию в реальное поле:
document.querySelector('input[type="file"]').files = file_list;
<input type="file">
- что просто архиполезно для браузерных ботов.var info = 'Какой-нибудь текст';
var dt = new DataTransfer();
dt.items.add(new File([info], 'primer.txt', {type: 'text/plain'}));
var file_list = dt.files;
console.log('Коллекция файлов создана:');
console.dir(file_list);
// Вставим созданную коллекцию в реальное поле:
document.querySelector('input[type="file"]').files = file_list;
<input type="file">
- что просто архиполезно для браузерных ботов.var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://api.weather.yandex.ru/v2/informers?lat=55.75396&lon=37.620393');
xhr.setRequestHeader('X-Yandex-API-Key', '04aa3404-32a8-4baf-a280-db8a58bb908a');
xhr.onreadystatechange = function() {
if (xhr.readyState === XMLHttpRequest.DONE) {
if (xhr.status === 200) {
var obj = JSON.parse(xhr.responseText);
console.log('Успех:');
console.dir(obj);
}
else {
console.log('Ошибка:');
console.dir(xhr);
}
}
}
xhr.send();
Максимальное количество файлов: 25 000
<?php
header('Content-type: text/html; charset=utf-8');
$opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"Accept-Encoding: identity\r\n".
"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.193 Safari/537.36"
)
);
$context = stream_context_create($opts);
$html = file_get_contents('https://www.rusprofile.ru/id/11597949', false, $context);
echo $html;
<?php
// Указываем тип документа и кодировку:
header('Content-Type: text/html; charset=utf-8');
// Включаем отображение ошибок:
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
// Адрес:
$url = 'https://ссылка_на_страницу';
// Создаём новый сеанс:
$curl = curl_init();
// Указываем адрес целевой страницы:
curl_setopt($curl, CURLOPT_URL, $url);
// О отключаем проверку SSL сертификата:
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
// Устанавливаем заголовки для имитации браузера:
$headers = [];
$headers[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9';
$headers[] = 'Accept-Encoding: identity';
$headers[] = 'Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7';
$headers[] = 'Cache-Control: no-cache';
$headers[] = 'Connection: keep-alive';
$headers[] = 'Host: ' . parse_url($url)['host'];
$headers[] = 'Pragma: no-cache';
$headers[] = 'Sec-Fetch-Dest: document';
$headers[] = 'Sec-Fetch-Mode: navigate';
$headers[] = 'Sec-Fetch-Site: none';
$headers[] = 'Sec-Fetch-User: ?1';
$headers[] = 'Upgrade-Insecure-Requests: 1';
$headers[] = 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.193 Safari/537.36';
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
// Разрешаем переадресацию:
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
// Запрещаем прямяой вывод результата запроса:
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// Делаем сам запрос:
$result = curl_exec($curl);
// Завершаем сеанс:
curl_close($curl);
// Смотрм результат:
echo $result;