@moonsoon said in Вписать только прокси в БАС:
Я так и не понял, в чём сложность этой задачи и за неделю никто не смог рассказать человеку за прокси) ТС проблема решена?
Ни не смог, а не захотел)) Но может за это время кто то и нашелся
В процессе взаимодействия с сайтом в браузере сайт отправляет определенный GET-запрос. Нужно подменить один из параметров в этом GET-запросе через BAS. Нужно именно в браузере, потому что HTTP-клиент (где было бы очень просто сделать замену) не подходит из-за Cloudflare.
Стандартными средствами BAS сделать это не удалось, куплю решение.
@UserTrue said in Подмена параметра в GET-запросе, отправляемом в браузере:
Все верно, тот топик я и создавал) Набор ссылок впечатляющий, но я все равно не знаю, как это сделать. Поэтому новый топик размещен в разделе "Заказать" :)
@doupiu said in Подмена параметра в GET-запросе, отправляемом в браузере:
@UserTrue "готовое решение", в таком случае)
Вариантов реализации множество. Близкий лично мне - внешний скрипт, который после старта браузера BAS цепляется к нему и перехватывает запросы/ответы и делает с ним, что хочешь. Это точно работает, если стартовать браузер не из BAS, а с помощью https://github.com/CheshireCaat/puppeteer-with-fingerprints, но на первый взгляд это должно работать если браузер уже кем-то запущен и нужно присоединиться нему по CDP.
Workflow:
Ссылки по теме:
Еще как вариант альтернативный модуль http использовать.
https://community.bablosoft.com/topic/23332/nativehttpclient-openssl
Xhr

const open_ = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function() {
console.log("Вызов open перехвачен:", arguments);
arguments[1] = 'https://httpbin.org/headers'
console.log("Вызов open перехвачен:", arguments);
open_.apply(this, arguments);
}
XMLHttpRequest.prototype.open.toString = function(){
return 'function open() { [native code] }'
}
let xhr = new XMLHttpRequest();
xhr.open('GET','https://httpbin.org/user-agent',false);
xhr.send();
JSON.parse(xhr.response)
Ftech примерно аналогично
const { fetch: originalFetch } = window; window.fetch = function fetch(...args) { console.log("Вызов fetch перехвачен:", ...args); return originalFetch(...args); };
Скорее всего тебе нужно просто после загрузки выполни через блок "яваскрипт"
Если у тебя сразу летит запрос до нажатия кнопки или иного действия, ставь через "при загрузке страницы"
Как-то так)
@Q_Q там такие трюки из-за CORS или CloudFlare не работают (не помню).
В любом случае вам огромное спасибо, потому что я допилил подмену XHR до рабочего состояния на основе вашего примера! Там я просто лишние URL-ы изначально перехватывал, поэтому не работало) Рабочий код у меня в итоге имеет вид:
const open_ = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function(method, url) {
if (method === 'GET' && url.includes("tut_maska_url")) {
const modifiedUrl = url.replace("abc", "xyz");
arguments[1] = modifiedUrl;
}
open_.apply(this, arguments);
};
XMLHttpRequest.prototype.open.toString = function() {
return 'function open() { [native code] }';
};