httpClientCustom - Кастомный модуль для работы с http-клиентом

Делитесь модулями
  • Релиз версии 1.6 - немного переделал код, для корректной работы в новой версии действия "Post запрос", "Прокси", "Содержание ответа" нужно открыть и нажать "Ок", так как изменилась структура этих функций.


    Теперь можно установить свой список ошибок при которых действия завершается сразу же, нужно выполнить код:

    _http_fatal_errors = ["ваш", "список", "ошибок"];
    

    Список по умолчанию: ["Connection refused", "Could not resolve proxy", "Received invalid version in initial SOCKS5 response"]


    Теперь можно установить свой список ошибок содержащихся в ответе сервера, нужно выполнить код:

    _http_errors_in_content = ["ваш", "список", "ошибок"];
    

    Список по умолчанию: ["Empty reply from server", "Unknown SSL protocol error in connection", "Received HTTP code 502 from proxy after CONNECT", "Received HTTP code 403 from proxy after CONNECT"]

  • Пофиксил переключение на внутренний клиент в действии "Post запрос"

  • @GhostZ

    Скажите пожалуйста, есть ли возможность добавить паузу между запросами, чтоб можно было задать время и процент увелечение с каждым не удачным запросом?

  • @kotikov, заменить sleep(1000)! в файле engine.js, на то что вам нужно, номер текущего повторения запроса хранится в переменной cycle_index

    b4dce891-6494-456f-b6f6-11edcb90369f-image.png

  • в обычном клиенте, если используется действие "прокси" с пустым значением - прокси сбрасываются и ошибок нет

    в этом модуле логика немного отличается, при попытке оставить поля пустыми - ошибка "прокси пуст"
    e6ac9bf3-76e7-4dad-a53a-cf974b22ef85-image.png

    не знаю баг или фича, больше интересует вопрос как сбросить прокси без перезапуска клиента? пустую строку подсунуть('')?

  • @Sadzurami а использовать то же действие из стандартного клиента чем не вариант?

  • @bigorat потому что стандартный клиент не используется например?

  • @Sadzurami а по вашему модуль httpcustom использует нечто другое? Очень вряд ли :)

  • @GhostZ благодарю

  • @GhostZ В файле httpClientCustom_XpathGetTextList_select.js неверный селектор #httpClientCustom_GetTextList_code, должен быть #httpClientCustom_XpathGetTextList_code. Видимо, менял название и пропустил.

  • @GhostZ said in httpClientCustom:

    Благодаря этому можно создавать свои модули работающие через клиент, на который не будут влиять настройки стандартного клиента

    Это в смысле куки не будут подтягиваться и можно функцию выполнять, она как в другом потоке будет?

  • @UserTrue, пофиксил, и установку пустой строки в прокси тоже.

    @Zack9, нет, запросы будут выполнятся через внутренний клиент, через него работает получение отпечатка и некоторые другие действия BAS.

  • 1 - [537604944] ReferenceError: Can't find variable: httpClientCustom_Get во время выполнения действия 396070059

  • @llimonix когда сидишь в редакторе скрипта в режиме запись, то все окей, пытаюсь его запустить и такое вот

  • а можно ли это заменить основным модулем в файлах баса хотя вроде не

  • @GhostZ подскажи, пожалуйста, как добавить проверку в POST запросе. Если Content-Type не указан в форме, то вообще не отправлять этот заголовок?

    Пробовал в engine.js менять, но все равно отправляется пустой.

    function httpClientCustom_Post(){
    	...
    	
    	_do(function(){
    		...
    		var headers_object = {"encoding":encoding, "method":method, "headers":headers};
    		if (content_type.length > 0) {
    			headers_object["content-type"] = content_type;
    		}
    		
    		_call(function(){
    			...
    			
    			_if_else(redirect, function(){
    				general_timeout_next(timeout);
    				http_client_post(value, params, headers_object)!
    			}, function(){
    				general_timeout_next(timeout);
    				http_client_post_no_redirect(value, params, headers_object)!
    			})!
    		},null)!
    		
    		...
    	})!
    };
    
  • @thepappo, это нельзя изменить на стороне модуля, для этого нужно менять исходники самого http-клиента. Можете отправить GET запрос с методом POST, раз у вас запрос без content-type, то он должно быть и без тела.

  • @GhostZ да, отправить GET запрос с методом POST и заголовками

    Sec-Fetch-Dest: empty
    Content-Length: 0
    

    прокатило

    это нельзя изменить на стороне модуля, для этого нужно менять исходники самого http-клиента

    ага, так и думал.

  • Почему-то при сохранении кук не сохраняются куки, проставляемые при редиректах. То есть если есть такие запросы:
    1 - 302
    2 - 302
    3 - 200
    то сохранятся куки только из "3 - 200".

    Я пробовал как ставить галку "Следовать переадресациям", так и вручную получать урл из заголовка Location и отправлять запросы, пока не будет получен условно 200 ответ. Такое ощущение, что хттп клиент баса просто не добавляет заголовки кук из 302 ответов.

    Есть решение как пофиксить?