Спасибо @Vaviloff, что статья, на которую вы ссылались, была великолепна, и ваше понимание очень помогло.

то, может быть, я параноик.

Я очищаю свою временную шкалу на Facebook для хобби-проекта с использованием PhantomJS. По сути, я написал программу, которая находит все мои объявления, запрашивая страницу для текстаSponsored с XPATH внутри фантомаpage.evaluate блок. Текст отображался как innerHTML htmla элементы.

В течение нескольких дней все работало отлично, и он находил тонны рекламы.

Тогда он перестал возвращать какие-либо результаты.

Когда я вошел в Facebook вручную, чтобы снова проверить элементы, я обнаружил, что словоSponsored теперь появляется на странице в::after элемент псевдокласса со свойством csscontent: sponsored, Это означает, что запрос XPATH для текста больше не дает никаких результатов. Шутка ли, Facebook, похоже, изменил способ отображения этого слова после того, как его вырубили в течение пары дней.

Paranoid. Я говорил тебе.

Итак, я предлагаю этот вопрос сообществу разработчиков Javascript, Web-Scraping и PhantomJS. Что, черт возьми, происходит. Может ли Facebook знать, что моя программа PhantomJS делает внутриpage.evaluate блок?

Если да, то как? Будут ли, например, мои фантомные команды появляться в программе регистрации ключей, встроенной в страницу?

Каковы некоторые из ваших теорий?

 epascarello08 дек. 2017 г., 07:02
Я думаю, что часть вашего вопроса, которая отсутствует, это: вы подделываете пользовательский агент браузера, когда делаете звонки? Если нет, я уверен, что они могут прочитать настроенную строку PhantomJS, которую ищет большинство сайтов при тестировании скребков. Я знаю, что многие компании просто перенаправляют звонки на основе пользовательских агентов. Я работал на тот, который перенаправил его на сайт, который, по сути, сказал, использовать бесплатный API, чтобы загрузить контент вместо очистки.
 Starcat08 дек. 2017 г., 07:09
Я подделывал да, это был (я думаю) универсальный агент -Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36
 epascarello08 дек. 2017 г., 06:44
Могут ли они обнаружить, что это фантом ..... да .... они знают, что он делает? Ну, они могут регистрировать действия так же, как любой может отслеживать что-либо на веб-странице, но код ... нет ... Но теперь Facebook знает ....
 epascarello08 дек. 2017 г., 06:36
Таким образом, вы думаете, что изменение HTML было результатом вашего отказа от сайта? Может быть, они просто переделали это ... Убери свою шляпу из фольги.
 Starcat08 дек. 2017 г., 06:40
Я знаю, что моя шляпа из оловянной фольги не такая крутая, как ваша викинговая :), но можете ли вы ответить, если, по крайней мере, возможно определить, что делает скребок PhantomJS на вашем сайте?

Ответы на вопрос(1)

Решение Вопроса

даже если пользовательский агент подделан. Есть много разных способов отличить его от других браузеров:

Неправильный порядок заголовковОтсутствие медиа-плагинов и новейших возможностей JSPhantomJS-специфические методы, такие какwindow.callPhantomИмя PhantomJS в трассировке стека

и много других.

Пожалуйста, обратитесь к этой прекрасной статье и презентации, связанной там для деталей:https://blog.shapesecurity.com/2015/01/22/detecting-phantomjs-based-visitors/

Может бытькукольник будет лучше всего соответствовать вашим потребностям, поскольку он основан на самом современном браузере Chromium.

 epascarello08 дек. 2017 г., 06:46
Но он не узнает, что на странице есть часть для чтения кода .... Он может обнаружить прокрутку, то, что было нажато, загружено. Он не имеет ни малейшего представления, как он просматривал содержание страницы.
 Starcat08 дек. 2017 г., 07:02
Спасибо @Vaviloff, что статья, на которую вы ссылались, была великолепна, и ваше понимание очень помогло.
 Starcat08 дек. 2017 г., 06:47
Я никогда не спрашивал, может ли он увидеть мой код. Если кто-то с пониманием PhantomJS должен ответить вместо вас, возможно, он сможет ответить, какpage.evaluate Блок запускает свои команды и как это выглядит на веб-сайте и как веб-сайт может обнаружить эти команды.
 Vaviloff08 дек. 2017 г., 06:45
Пожалуйста, подумайте об этом @epascarello: если они знают, что это бот, они могут отслеживать, что он делает. Так что да, это возможно, хотя и не очень вероятно.
 epascarello08 дек. 2017 г., 06:44
Не совсем то, что спрашивает OP ... Tin Foli Hat спрашивает, видят ли они его работающий код.

Ваш ответ на вопрос