У меня был очень похожий опыт, но я остановился на другом решении.
Я тоже тестировал скрипт на 8 ядерном 32 гб дедике с широким каналом и там еле еле 10 потоков шло.
Работающими решением оказалось взять 32 ядерный локальный сервер с 64 оперативки, на не очень быстром канале, с сокс5, на нем 100+ потоков запускалось.
Скрипт тот же, никаких оптимизаций не делалось.
Стоит конечно побольше, чем аренда дедика но тут уж зависит от окупаемости твоей темы, стоит ли оно того или нет.
Но соксы могут быть узким местом, по возможности нужно делать свои соксы. Для этого, можно брать дешевые VPS и установить сокс через опенсурсный софт microsocks для линукса (в инете полно инструкций по установке, занимает не более 5 минут вручную, и можно установку через БАС автоматизировать также на случай если нужны сотни соксов).
Вопрос по работе с запросами (post)
-
Приветствую, недавно я начал пользоваться сторонним софтом для перехвата запросов на одном сайте и незначительного их редактирования
После проделывания определенных действий на сайте (кликов на элементы) я включаю софт и он ловит запрос
POST /store/buynow?ms-cv=tzyfJCv2uEULcHjJ%2B%2FgIzc.55&noCanonical=true&market=US&locale=en-US&clientName=$UNKNOWN$Com HTTP/2 Host: www.unknown.com Cookie: MC1=GUID=c6f3470bbfaa4f4fb73bedb31e73ccde&HASH=c6f3&LV=202312&V=4&LU=1704024825343; cartMuid=38D1E676151A617416C4F58E14206087; uknownTelemetryDeviceId=59381fc7-f7e0-4584-b82f-3d685c4557f0; ANON=A=63E769D238484C5818E5AD08FFFFFFFF&E=1d3c&W=2; NAP=V=1.9&E=1ce2&C=O79_MzBcd5WRGNcc9bg2a3gNs_kwnlougE17d_X656obeJks5ZT_pA&W=2; akacd_OneRF=1711801884~rv=17~id=988876813988b823e61e005b813177e0; MUID=1F1227D0E3C76B2A2D783428E24C6AB1; MSFPC=GUID=c6f3470bbfaa4f4fb73bedb31e73ccde&HASH=c6f3&LV=202312&V=4&LU=1704024825343; MS0=677297306af243268c25e33e8c3ba710; ai_session=QuNnXxvD/ZFx2xih93NObD|1704039414274|1704039414274 Content-Length: 3067 Cache-Control: max-age=0 Sec-Ch-Ua: "Chromium";v="119", "Not?A_Brand";v="24" Sec-Ch-Ua-Mobile: ?0 Sec-Ch-Ua-Platform: "Windows" Upgrade-Insecure-Requests: 1 Origin: https://www.$UNKNOWN$.com Content-Type: application/x-www-form-urlencoded User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.6045.199 Safari/537.36 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.7 Sec-Fetch-Site: cross-site Sec-Fetch-Mode: navigate Sec-Fetch-User: ?1 Sec-Fetch-Dest: iframe Referer: https://www.$UNKNOWN$.com/ Accept-Encoding: gzip, deflate, br Accept-Language: en-US,en;q=0.9 Priority: u=0, i data=%7B%22products%22%3A%5B%7B%22productId%22%3A%229NB54XTF084M%22%2C%22skuId%22%3A%220010%22%2C%22availabilityId%22%3A%229P4BX9TM0HZ3%22%7D%5D%2C%22campaignId%22%3A%22$UNKNOWN$comct%22%2C%22callerApplicationId%22%3A%22$UNKNOWN$Com%22%2C%22expId%22%3A%5B%22EX%3Asc_$UNKNOWN$gamepad%22%2C%22EX%3Asc_$UNKNOWN$spinner%22%2C%22EX%3Asc_$UNKNOWN$closebutton%22%2C%22EX%3Asc_$UNKNOWN$uiexp%22%2C%22EX%3Asc_disabledefaultstyles%22%2C%22EX%3Asc_gamertaggifting%22%5D%2C%22flights%22%3A%5B%22sc_$UNKNOWN$gamepad%22%2C%22sc_$UNKNOWN$spinner%22%2C%22sc_$UNKNOWN$closebutton%22%2C%22sc_$UNKNOWN$uiexp%22%2C%22sc_disabledefaultstyles%22%2C%22sc_gamertaggifting%22%5D%2C%22clientType%22%3A%22$UNKNOWN$Com%22%2C%22data%22%3A%7B%22usePurchaseSdk%22%3Atrue%7D%2C%22layout%22%3A%22Modal%22%2C%22cssOverride%22%3A%22$UNKNOWN$Com2NewUI%22%2C%22theme%22%3A%22dark%22%2C%22scenario%22%3A%22gift%22%2C%22suppressGiftThankYouPage%22%3Atrue%7D&auth=%7B%22XToken%22%3A%22XBL3.0+x%3D26905049464691295%3BeyJlbmMiOiJBMTI4Q0JDK0hTMjU2IiwiYWxnIjoiUlNBLU9BRVAiLCJjdHkiOiJKV1QiLCJ6aXAiOiJERUYiLCJ4NXQiOiJZWXpaQjVNSEo2VHUtZ0w0ZlhkWWhUN3dINVEifQ.m0sYmz3gRWIi01RpET9_XHy6Z2a8c1DR31brwfBTqtVbUExjHaJYQ9QP26ySBmkdvOIojSSOUB-yoXCY2zTiQblVKjDGc4ENDfpi6RbMFreuiSC9ZHofAM-DsF2m99_5YvI6IDNoCt8YxiSJwRNTNh1k7vYUmLx7exQKhnHLZG9Q526Z446Gg6GJT41Y_J49-aP_VsHflWXOEQ806HWC1kIl8Lx6btGrc-bhNdAiQlYQeb0tIL1qKkSK98RjjxT8IPNRiru8wp_Fpoj38SevETXNmk490xrjjkGEwmFwpHR2yVErbBktI_1LkA0zpuzMAdYm6V5tlYxpkFLaNoj53w.luYNXXS0X9uPw2Vi9KebbQ.sp4uE7OuC1cWN8Q_mAfSVUZkwKfYnuVZ1VRSCbG0LhzVlTziTWIeECUDR6A2OjpYbvlUwpAW6k9zxTXBP8hXblwpRlBwhJaqAzz77OwQpTjx2omwNrnatbuYTzq548nzf5UJmB6r62Nl4zRKnbEPbwxthJ60vRqNQ5BXlZdJXdg_29guNQFrqoaBuS7MNTGtQ_mWuKG0v0Xyww-DTwthbazDqT6QqRNC8YYI2jzj5flvFqBa-FeZCRK2yxisf-G3w8vf7c9H-_PdZp2SdZ0BlOq_xqERToI8PgAaxS1RTudwRcxDNdfGbwrbxVh-V7oMlrM7i9yiHFISIoZLHa28pxyJjSdxQ4cABEF5nZs4h92uSeF_DCO3efUOP7N4R7COnpQ8himjh83ebDeT-irbwTfTcpZZUaIM_3IgtubFVUdUIn9SyDwQjn1C6bstE3kR55Ds021bZ_1OaGdBF47Rr6LMj28gJQS8TCeEaIXVumaV1vm2eoE7yHTSt1r50kyrQbaafau8vyz02ggNSk2klTbmaqAzmrOzHQ3SYsAvTW-e9dwkrcrfHvcpri98_2Bxz0jFo_cLVXsb0gz6VHst-TsPx9AKctPsbpKXpiAZ25gHMgCnxNKOz08oiw0IPD7Ft_tseooK2VUmnqUPE9SLBp_vHsMc6HCjlY_hUr9jY64Zb-Ho2YGYM0sjabQPinRP-1t3fnSnUXFnEAfSSuEPtk6Pp1ZCLx-uJ6n2qz4UfgVVaRuxNONsIhLhPWUHnh_LvF_qIMKjJc-dbLNmrKKDKo3RLDpl0DY7CJv1SRRXlwMjZMA635BlOJ-f-cH5shYKnQrdjP27iRfdvgBFaFEhfHc2WbGd3Um-T08N8JkQ2-7C943P2BCyaM_ja8OegnBmsZkkRSH8IZBPT65lRY84hLmm-JdwpYdAocViZsOwBpwRHs_gQZY9IEGByQtEEhDKQU-w01YkBTL6tU0mRuLkNvRcMowcq0kIuG6tZ5uvJDa8TLmagkA0mDmCkV2G_4hftEnBatX42kJEP_Ifl6GZ9TPGsZNeCzz8fYsoSmeaI3btWnx8YvNrYQZ4uWkjbVYlD3i2tuGiL0MaIJyCXWpxPWWjUsqvFafr5mV_GfDtf8zw5K2fsDgUPr9Iz8LiOdEHcDLUJojrEXBwyGbdriF9b-r8L81eAaer_HJyTXanU0rxQ3i4yvWiKb-rtRMDxNi7dIgLd2fHmaEYXAt1ciTQjgHs0xnQ6PAr0Gjg4QbnkauskHr4yi5NuMVCA6QKmPWV5NGzYfZmNSjBA3FD-NzGHeK40bzbTsAqnrjmns99ZyrJsepnG76_Kt6_Yi0f3ibwdz4-juq5ICG5acHS_QVv6-9TFeIVCv09zIiWk8kLi-Si1dx_f9Pu8vqvHgvF4a6GJl6G8RO8sXPvc7c7Vtky6ncca02Wm0jADf6Xwy9LK6_ZLFOKKovP90hd0a7bfTc092hBL5_eG6YSiJ_v0vNQLSMRnf6pFgABexvTQyYXC_Gg4YMF61M8CNZhpK_PslirMh_7_Ip2xPD1421oqaxddicza7_UZAFtsoMcy4FexFtGi566RRadvLQbJFpYqn2D.TRuuTVibfipkwjCvzOaaBdVfAR_254Jpxx1uuJNxlI4%22%7DПосле я меняю значение US в пост запросе (&market=US&) на &market=HE&
И на этом вся работа с запросом заканчиваетсявопрос, как мне после проделывания этих же действий в басе "поймать" этот запрос и отредактировать его?
Буду крайне благодарен за любую помощь -
делаем запросы в браузере, "Получить последний элемент кэша" по маске вашего сайта, распарсить этот запрос через json, потом "заменить строку" нужной вам переменной (юрл), другие данные спарсить по типу заголовков и т.д, "загрузить cookie из браузера" или "установить заголовок". Создать пост запрос с нужными данными которые вы спарсили, замененными, не забудьте прокси для клиента устанавливаются отдельно от браузера
-
@qwe123123
Накинь манкипатч. Вот пример на фетч.const { fetch: fetch_ } = window; window.fetch = function (...args) { console.log("Вызов fetch перехвачен:", ...args); let [resource, config ] = args; resource = 'https://httpbin.org/headers' console.log("Вызов fetch перехвачен:", [resource, config]); return fetch_(resource, config); }.bind(window.fetch); -
@Metaferssance Большое спасибо за отклик, но у меня чуть другая задача
Еесли я все это распаршу и заюзаю по твоему гайду - то запрос уже улетит, c которого кэш генерился
И если я отправлю заново те же самые параметры - сработает фрод и система меня пошлетЕсть ли какая-нибудь возможность в басе получить определенный запрос с параметрами, после чего заморозить его (не отправлять обратно) изменить значения в пост запросе и отправить его теми же остальными параметрами
Я извиняюсь если криво изъясняюсь, честно, вообще во всей этой теме с запросами впервые копаюсь)
-
пообщался с нейронкой, выдала такой ответ исходя из примера выше с манкипатчемм, адаптировано для bas, ибо не поддерживает напрямую использование сервис-воркеров в среде (по крайней мере так думает нейронка)
В Browser Automation Studio (BAS), чтобы отложить отправку запроса до момента его изменения, вы можете использовать JavaScript код для перехвата запроса и изменения параметра. Для этого вы можете воспользоваться событием beforeSendRequest. Пример кода, который можно вставить в среду Browser Automation Studio: javascript Copy code // Функция для изменения параметра "market" function modifyMarketParameter(request) { // Получение параметров из URL var url = new URL(request.url); var params = new URLSearchParams(url.search); // Замена параметра &market=US на &market=AR params.set('market', 'AR'); // Установка новых параметров в URL url.search = params.toString(); // Замена URL в запросе request.url = url.toString(); return request; } // Перехватчик перед отправкой запроса window.addEventListener('beforeSendRequest', function(event) { // Вызов функции для изменения параметра "market" event.request = modifyMarketParameter(event.request); });люди добрые, подскажите пожалуйста, куда и как мне это вообще вставить?)
Впервые с запросами сталкиваюсьВот у меня есть действие на сайте - именно после его выполнения (прожатия по элементу) приходит запрос который и необходимо перехватить и заменить в нем "ссылку"
как мне это все реализовать -
Вот выдала алгоритм уже, что и как в басе самом добавлять
Но я искренне не понимаю что она имеет ввиду под блок "перехват запроса" и как это все накидать в басе
такого кубика я не нашелДобавьте блок "Открыть сайт" (Open Site). Укажите URL страницы, на которой вы хотите выполнить изменение параметра "market". Выполнение JavaScript кода: Добавьте блок "Выполнить Javascript" (Execute JavaScript). Вставьте JavaScript код, который был предоставлен в предыдущем ответе, в поле "JavaScript Code". Перехват запроса: Добавьте блок "Перехват запроса" (Request Interceptor). В этом блоке укажите необходимые условия, при которых запрос будет перехвачен. Например, вы можете использовать условие "Если URL содержит" и указать часть URL, где меняется параметр "market". Изменение параметра "market": Внутри блока "Перехват запроса" добавьте блок "Выполнить Javascript". Используйте JavaScript код для изменения параметра "market" в соответствии с предыдущим примером. Отправка измененного запроса: После блока "Перехват запроса" добавьте блок "Отправить запрос" (Send Request). Укажите нужные параметры запроса (URL, метод, заголовки, тело запроса и т. д.). Дополнительные действия: В зависимости от вашего сценария, вам может потребоваться добавить дополнительные действия. Например, сохранение ответа, обработка ошибок и так далее. -
@qwe123123 said in Вопрос по работе с запросами (post):
по крайней мере так думает нейронка
Нейронка, когда имеет мало знаний по заданному вопросу (например про БАС) начинает выдумывать правдобный бредокод, поэтому чтобы использовать нейронку хорошо бы самому разбираться в этом вопросе )