LINUX.ORG.RU

Перенаправление вывода браузера? другое в голову не приходит.

 ,


0

1

Есть страница интернет-телестанции, на ней скрипт (ява или пхп, или ещё что). При открытии этой страницы браузером этот скрипт отрабатывает, и формирует временную ссылку на url видеопотока, который и проигрывается в расположенном на странице видеоокошку. Эту временную ссылку можно отловить, скормить своему видеоплееру, и смотреть канал уже в нём, без веб-интерфейса.

Это удобно, но сначала нужно запустить мощную тяжёлую мозиллу с аддоном-сниффером, в окне этого аддона отыскать искомую видеоссылку, скопировать её, закрыть мозиллу, скормить скопированную ссылку плееру...

А хотелось бы так: запустить мозиллу так, чтоб её «выход» отправить не в графическое окно, а в stdout (я не владею тонкостями, так что могу слегка напутать с терминами), чтоб там регулярными выражениями выцепить из него искомый временный url.

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

mpv `браузер <ключи перенаправления вывода> урл_станции | grep ... | sed ... ещё что-нибудь`

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

Ответ на: комментарий от Yorween

На стороне сервера кто/что предоставляет видеопоток? Есть сомнение, что он в любом случае сможет существовать «в вакууме», отдельно от веб-сессии. Только если веб-сайт является необязательной обёрткой над прямыми ссылками на видеопотоки.

Возможно я ошибаюсь, но иначе кто-то на стороне клиента всё равно должен держать веб-сессию и вписываться во всякие там защиты от XSRF, если они есть.

blexey ★★★★ ()
Ответ на: комментарий от blexey

кто-то на стороне клиента всё равно должен держать веб-сессию

Вот и я о том же - без браузера тут, само собой, никак. Мне только нужно как-то суметь запустить его в «безоконном» режиме, чтобы просто получить код уже сгенерённой веб-страницы, со всей конкретикой, которую для этого предоставляет браузер. Я пытался это сформулировать в посте: сделать так, чтобы браузер результат своей работы по обработке страницы (с находящейся где-то внутри прямой ссылкой на поток) отправил не в движок, а, грубо говоря, в терминал, где я всякими регекспами эту прямую ссылку из этого результата вытащу. Как-то вот так.

piyavking ★★ ()
Ответ на: комментарий от Moondancer

было бы просто прекрасно, само собой. но у меня знаний не хватит дебажить скрипт, дёргать его, может ещё, не приведи Вселенная, какую-то среду для него эмулировать. Ладно уж, пусть жирнобраузер дёрнется - всё равно он нужен на короткий момент получения прямой ссылки, после этого мавра можно убить.

piyavking ★★ ()
Ответ на: комментарий от Moondancer

Я использую luakit - он достаточно headless, как по мне, но вопрос не в том, чтоб использовать максимально лёгкий браузер (всё равно он нужен только на короткий промежуток времени для формирования прямой ссылки на поток, после чего браузер прибивается), а в том, как получить результат браузерного рендеринга, чтоб его распарсить. Запуская luakit в терминале, я не вижу в выхлопе ни намёка на искомый прямой url, хотя по факту в браузере этот поток вполне себе воспроизводится.

piyavking ★★ ()
Ответ на: комментарий от blexey

да, хватило логики и curl.

#!/bin/bash

out="$(curl https://www.glaz.tv/popup-player/681/1/038c647c641a4dd1dd08658d6922e869/ | grep 'signature' | head -n 2 | awk -F'"' '{print $2}')"
mpv `echo -n "$out" | tail -n 1;echo "$out" | head -n 1`

безобразие, конечно, но работает. к тому же появился какой-то намёк на понимание того, что ясобирался сделать)))

piyavking ★★ ()
Последнее исправление: piyavking (всего исправлений: 2)
Ответ на: комментарий от sergej

хм... занятная штука. я всегда хотела парсер, отвязанный от гуя. а тут люди сделали финт ушами и просто парсят выхлоп браузера :) немного странное, но вполне себе решение.

Iron_Bug ★★★★ ()
Ответ на: комментарий от piyavking

ну, курлу далеко до браузера. в том смысле, что современные сцайты иногда настолько напичканы скриптами, что курл тебе вернёт практически пустую страницу с кучей ссылок на скрипты :) в этом и проблема, собственно. если бы это был старый добрый веб времён альтависты - я бы из консоли его браузила и не мечтала бы о каком-то монстрозном парсере, который мог бы работать удалённо, или с выводом в консоль :)

Iron_Bug ★★★★ ()
Ответ на: комментарий от piyavking

и куда он срёт всеми страницами

Никуда, мало того — там и dump-режима не предусмотрено, как в w3m, например. Посему тебе и сказано — копать в сторону headless-webkit. Впрочем, можно и к luakit изи модуль сделать, который будет забирать страницу и отдавать куда надо, наверняка даже есть уже.

Moondancer ()
Ответ на: комментарий от Iron_Bug

Рано складывать руки, впереди новые челленджи — ибо сайты всё-таки (пока) пишутся людьми, а что написал человек — другой может переписать проще ;-) Написание скриптов, заменяющих жирносайты, нынче сродни написанию кейгенов — продираешся отладчиком среди тонны мути, чтобы выцепить один заветный алгоритм :3

Moondancer ()
Ответ на: комментарий от Moondancer

ну, меня не воодушевляет копание в тоннах говна. да там и алгоритмов-то никаких. ну какие алгоритмы в нынешнем вебе? там лапша и копипаста. и макаки, которые не понимают, как работает engine, который они дёргают. и куча скриптов, написанных рукожопами, которые жрут ресурсы. мне знающие люди говорили, что даже на жабаскрипте можно писать правильно и тогда он будет не таким ужасным. но, видимо, знающих людей очень мало. а остальные пишут как получится. и всё это сдобрено бодрым «надо сделать уже вчера». а на кастомизацию под юзерагента и вовсе давно насрали. поэтому качество стремится к нулю и многие сайты выглядят просто ужасно.

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

Iron_Bug ★★★★ ()
Ответ на: комментарий от Iron_Bug

Эх, рано я проадовался. прямой урл формируется не одним волшебным словом «signature», а ещё и другим - «nimblesessionid», который не ловится, хоть ты тресни.

А без этого nimblesessionid поток получается куцый - некоторое время проигрывает, и затыкается(

piyavking ★★ ()
Ответ на: комментарий от Moondancer

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

Я чайник, даже ключевые слова для поиска этой вещи не очень представляю, какие вбивать(

Слушай, мил человек, щёлкни гуглём, если уверен, дай линк на этот модуль!

piyavking ★★ ()
Ответ на: комментарий от WitcherGeralt

нет. я-то хочу вообще без браузера. то есть, *вместо* браузера парсер отдельно, без всякой гномятины и прочих безобразий. на C или на крайний случай C++. чтобы можно было, например, запускать на сервере, а где-то на клиенте получать в чистом виде html и рендерить произвольным, не привязанным к единственному гую интерфейсом. хоть в графике, хоть в консоли.

а запускалка браузера, да ещё и на жабаскрипте, да ещё и от гугл - не, это не то. от гугла вообще надо уходить постепенно. они уже начали обмазывать свой браузер баннерами (планируют урезать права adblock'ов). и это причина не доверять им и начинать сваливать с хрома. хотя он и имеет наиболее актуальный движок, но если там такие настроения, то придётся от него отказываться. вообще, копрорациям доверять нельзя никогда.

Iron_Bug ★★★★ ()
Ответ на: комментарий от Iron_Bug

я-то хочу вообще без браузера

Без браузера будет топорно, а не топорно уже будет headless браузером, как здесь.

на C или на крайний случай C++

А тебе для чего? Если просто из ненависти к другим языкам, то предлагаю тебе уже вырасти.

рендерить произвольным, не привязанным к единственному гую интерфейсом. хоть в графике, хоть в консоли

Тогда puppeteer как раз то, что тебе нужно.

да ещё и от гугл

Не понимаю какие могут быть претензии к полностью открытому Chromium.

вообще, копрорациям доверять нельзя никогда

Смотря в чём. В личном использовании опенсорсных продуктов от них не вижу никакой проблемы. А разрабатывать что-то на С# (Mono они давно под себя подмяли) или Swift, например, я бы не стал, тут действительно анальная оккупация.

WitcherGeralt ★★ ()
Ответ на: комментарий от WitcherGeralt

а не топорно уже будет headless браузером, как здесь.

так он не хэдлесс, в полном смысле. у него нет собственного парсера. просто скриптами манипулируют с уже собранным стандартным браузерным бинарём, насколько я понимаю. а я хочу, чтобы в парсере не было никакой графики. чтобы можно было поставить на сервер (например, за границей) и тащить с него уже только готовый html. ну или линки на какие-то ресурсы для скачивания. для встраивания в какой-то софт, не обязательно графический. чтобы весь жабаскрипт и прочее было отделено от моего ноута, а на сервере не нужны были графические библиотеки.

А тебе для чего?

эффективность. я допускаю использование баша и перла для наколенных, чисто технических скриптов. ещё я допускаю использование lua, но тоже в строго определённых задачах. он имеет маленький футпринт и не жрёт ресурсы. но не жабаскрипт и не пистон, уж точно. этот жир нужно искоренять. и в вебе тоже.

Смотря в чём.

во всём. копроративные поделки - это бомба замедленного действия. когда ты привыкнешь пользоваться бесплатным дерьмом, они туда всунут зонды или начнут навязывать рекламу (вот как с хромом они придумали). и всё, тебе надо бежать куда-то, а некуда: все свалили на хром, альтернативы не развивались, а он вдруг оказался подставой. в этом опасность такого ПО. и это не случайность, это именно цель копрораций.

Iron_Bug ★★★★ ()
Ответ на: комментарий от Moondancer

404

File not found

The site configured at this address does not contain the requested file.

шёл бы ты в более подходящее для балаболов место, бггг. просто констатация, и просьба впредь не отсвечивать. спасибо за внимание.

piyavking ★★ ()
Ответ на: комментарий от Iron_Bug

просто скриптами манипулируют с уже собранным стандартным браузерным бинарём, насколько я понимаю. а я хочу, чтобы в парсере не было никакой графики.

так а нельзя эту графику с браузера как-нибудь «ободрать» (как-нибудь хитро собрать, скажем)?

ведь выпиливать - не запиливать, а опенсорс развязывает шаловливые ручки)

piyavking ★★ ()
Ответ на: комментарий от piyavking

это будет сложно. в браузерах не предусмотрено таких опций. а если брать отдельно парсер, то всё равно надо будет всё остальное (юзерский интерфейс по отправке линков для перехода и т.д.) писать вручную. и ты будешь жёстко зависеть от релизов браузера и каждый раз тебе придётся вносить новые патчи. это грустная перспектива.

Iron_Bug ★★★★ ()