Общие вопросы про облегчение потоков.



  • Судя по мануалам https://learn.javascript.ru/websockets

    Протокол WebSocket работает над TCP.
    Это означает, что при соединении браузер отправляет по HTTP специальные заголовки, спрашивая: «поддерживает ли сервер WebSocket?».
    Если сервер в ответных заголовках отвечает «да, поддерживаю», то дальше HTTP прекращается и общение идёт на специальном протоколе WebSocket, который уже не имеет с HTTP ничего общего.

    Создать подобный XMLHttpRequest-запрос (подделать WebSocket) невозможно, по одной простой причине: указанные выше заголовки запрещены к установке методом setRequestHeader.

    Получается через BAS не получится работать с websockets?


    На github нашёл js сниффер websockets.

    (function () {
    	WebSocket.prototype._send = WebSocket.prototype.send;
    	WebSocket.prototype.send = function (data) {
    		this._send(data);
    		this.addEventListener('message', function (msg) {
    			console.log('>> ' + msg.data);
    		}, false);
    		this.send = function (data) {
    			this._send(data);
    			console.log("<< " + data);
    		};
    		console.log("<< " + data);
    	}
    })()
    

    Он работает выводя всю информацию, которую fiddler не видел.

    Данные вида

    "socket_hash":"c5Qwte","info":"number"}
    

    Образование хеша и сами функции у меня есть, декодированные и деобфускациониронные js ..


    Вопрос:В теории, можно ведь не загружая страницу, даже на пустой в BAS'e использовать экшен явасрипт, и скопировать туда функции js?
    Или сохранить страницу, руками вырезать всё, кроме обращений js и работать с ним..


    Походу единственный вариант остаётся - написать модуль для работы с websockets.



  • @Fox said in Общие вопросы про облегчение потоков.:

    Он работает выводя всю информацию, которую fiddler не видел.

    В фидлере вкладка «websockets» почему-то сразу не видна. Нужно дважды кликнуть по вебсокету в списке запросов и тогда она появится, там все есть и содержание и ключ маски и тд.
    Еще в Charles тоже есть поддержка вебсокетов.



  • @anchorday websockets изучать уже начал :). Главное понять, как с ними работать, минимизировав нагрузку на потоки в BAS. Я так понимаю с закрытым браузером не получится работать?


  • administrators

    @Fox

    Вдруг кто разбирается в Node.js и как можно ему отправлять post-запросы?

    Точно так же, как и серверу написанному на другом языке.

    Вебсокеты хороши тем, что поддерживают постоянное соединение и могут реагировать на события от сервера.

    Проблемы с производительностью еще остались?



  • @support Да, после запуска в 45 потоков, проект кушает ресурсы на 80%, однако через несколько часов намертво загружает сервер, что тот перестаёт отвечать.
    Вопрос на миллион, можно ли работать с вебсокетами без участия браузера? Или, например, получить соединение в браузере, потом его закрыть и общаться с сервером напрямую средствами BAS'a?


  • administrators

    @Fox said in Общие вопросы про облегчение потоков.:

    Да, после запуска в 45 потоков, проект кушает ресурсы на 80%, однако через несколько часов намертво загружает сервер, что тот перестаёт отвечать.

    А что за проект? Какие в нем действия, итд

    Вопрос на миллион, можно ли работать с вебсокетами без участия браузера?

    Да, конечно, полно клиентских библиотек.

    Или, например, получить соединение в браузере, потом его закрыть и общаться с сервером напрямую средствами BAS'a?

    Да, можно открыть браузер(помойму в том же домене) и работать с вебсокетами через апи яваскрипта.


  • administrators

    Да, конечно, полно клиентских библиотек.

    Например, в мой любимый qt такая либа встроена.



  • @support Спасибо большое! Это был главный вопрос :).
    Проект элементарный, в 43 потока, с пропуском кадров 1000, через прокси и с уникальным отпечатком заходят на сайт и ждут информации. Первый поток с пропуском кадров 1, парсит чат и даёт информацию остальным через глобальную переменную. В 20 потоков скрипт работает стабильно неделями, загружая систему на 30%-40%, но увеличив потоки до 30 вешают сервер через сутки..

    Ещё заметил, что если сам сервер не перезагрузить, то снова запущенный скрипт в те же, стабильные, 20 потоков будет кушать в 1.5-2 раза больше ресурсов.

    Начну изучать qt :), и возможность его использования в BAS'e.


  • administrators

    @Fox Какое потребление ресурсов в случае 20 потоков? Память/проц?

    Начну изучать qt :), и возможность его использования в BAS'e.

    Лучше на js напишите и парьтесь. Но дело ваше)



  • @support said in Общие вопросы про облегчение потоков.:

    напишите и парьтесь

    Хорошо сказано :))

    Если можно реализовать на js, значит буду пытаться на js. Если есть хорошая литература на эту тему, буду рад.

    Какое потребление ресурсов в случае 20 потоков? Память/проц?

    Вот домашний сервер.
    0_1499115195684_forum34 домашний сервак.png


    А вот купленный сервер
    0_1499115236472_forum35 купленный сервак.png
    На кардиограмму похоже )) вон пульс даже есть..
    Что странно, дак это объём используемой памяти, 80% и там и там, что 4гб, что 12 гб.



  • Переписал проект немного, отказавшись от моих любимых регулярок, в пользу json и xpath. И удалось этим снизить общую нагрузку на проц аш на !!30%!! Сейчас сервер работает со всеми 45 потоками и кушает чуть больше 50% мощности.


Log in to reply
 

Looks like your connection to Bablosoft was lost, please wait while we try to reconnect.