Меня попросили очистить сайт, который получает данные через websockets, а затем отображает это на странице через javascript / jquery. Возможно ли обходить посредника (DOM) и потреблять / очищать данные, поступающие через сокет? Возможно ли это с помощью безгласного webkit, такого как phantomJS? Целевой сайт использует socket.io .
Мне нужно потреблять данные и запускать предупреждения на основе ключевых слов в данных. Я рассматриваю библиотеку Goutte и буду строить скребок в PHP.
Socket.io не совсем то же самое, что и websockets. Поскольку вы знаете, что они используют socket.io, я сосредоточен на этом. Самый простой способ очистить этот сокет – использовать клиент socket.io.
Поместите это на свою страницу:
<script src="https://github.com/LearnBoost/socket.io-client/blob/0.9/dist/socket.io.js"></script> <script src="scraper.js"></script>
Создать файл scraper.js:
var keywords = /foo|bar/ig; var socket = io.connect('http://host-to-scrape:portnumber/path'); socket.on('<socket.io-eventname>', function (data) { // The scraped data is in 'data', do whatever you want with it console.log(data); // Assuming data.body contains a string containing keywords: if(keywords.test(data.body)) callOtherFunction(data.body); // Talk back: // socket.emit('eventname', { my: 'data' }); });
ОБНОВЛЕНИЕ 6-1-2014
Вместо того, чтобы запускать это на сервере, похоже, что вы пытаетесь запустить это в окне браузера, глядя на вопрос StackOverflow, на который вы ссылаетесь ниже. Поэтому я удалил все о NodeJS, поскольку это не нужно.
Это было бы наилучшим для вас способом:
Отбросьте данные непосредственно со страницы клиента вашего приложения, используя javascript, не используя php как средний конец. Таким образом, ваш сервер не будет иметь абсолютно никакой нагрузки, и я порекомендую это. Поскольку ваш целевой сайт использует socket.io, используйте клиент socket.io для удаления данных. Форма socke.io внесезонный сайт :
<script src="/socket.io/socket.io.js"></script> <script> var socket = io.connect('http://target_website.com'); //look the next line closely socket.on('event_name', function (data) { console.log(data); //do something with data here }); </script>
Когда возникает вопрос, как вы узнаете * event_name * ? Вы должны найти это, проведя исследование на js целевого сайта. Нет никакой работы. По крайней мере, я не знаю ни одного из них без них.