бездисплейный интернет-браузер? [закрытый]

Если у вас есть пользователи, значит, у вас есть система входа в систему, поэтому с того момента, как пользователь использует функции или какое-либо действие, сохраните атрибут в своей модели на сервере с датой начала, после чего вы можете контролировать показ / скрыть содержимое и соответственно представить оплату непотребляемых IAP

68
задан hippietrail 17 August 2012 в 05:25
поделиться

10 ответов

.NET содержит System.Windows.Forms.WebBrowser . Вы можете создать экземпляр этого, отправить его по URL, а затем легко проанализировать HTML на этой странице. Затем вы можете переходить по любым ссылкам, которые вы нашли, и т. Д.

Я работал с этим объектом лишь минимально, так что я не эксперт, но если вы уже знакомы с .NET, то, вероятно, стоит посмотреть.

0
ответ дан 24 November 2019 в 14:09
поделиться

Вот список браузеров, которые я знаю без заголовка:

  • HtmlUnit - Java. Пользовательский движок браузера. Ограниченная поддержка JavaScript / эмуляция DOM. Открытый исходный код.
  • Ghost - только Python. WebKit основе. Полная поддержка JavaScript. Открытый исходный код.
  • Twill - Python / командная строка. Пользовательский движок браузера. Нет JavaScript. Открытый исходный код.
  • PhantomJS - Командная строка / все платформы. WebKit основе. Полная поддержка JavaScript. Открытый исходный код.
  • Awesomium - C ++ /. NET / все платформы. Хром основе. Полная поддержка JavaScript. Коммерческая / бесплатная.
  • SimpleBrowser - .NET 4 / C #. Пользовательский движок браузера. Нет поддержки JavaScript. Открытый исходный код.
  • ZombieJS - Node.js. Пользовательский движок браузера. Поддержка JavaScript / эмуляция DOM. Открытый источник. Основано на JSDOM .
  • EnvJS - JavaScript через Java / Rhino. Пользовательский движок браузера. Поддержка JavaScript / эмуляция DOM. Открытый исходный код.
  • Watir-webdriver с безголовым самоцветом - Ruby via WebDriver. Полная поддержка JS через браузеры (Firefox / Chrome / Safari / IE).
  • Spynner - только Python. PyQT и WebKit.
  • jsdom - Node.js. Пользовательский движок браузера. Поддерживает JS через эмулируемый DOM. Открытый исходный код.
  • TrifleJS - порт PhantomJS с использованием MSIE (Trident) и V8. Открытый исходный код.
  • ui4j - Чистое решение Java 8. Библиотека-оболочка для JavaFx WebKit Engine, вкл. безголовые режимы.
  • Chromium Embedded Framework - Полная современная встроенная версия Chromium с закадровым рендерингом по мере необходимости. C / C ++, с оболочками .NET (и другими языками). Так как это Chromium, он поддерживает все . Лицензия BSD.
  • Selenium WebDriver - Полная поддержка JavaScript через браузеры (Firefox, IE, Chrome, Safari, Opera). Официально поддерживаемые привязки : C #, Java, JavaScript, Haskell, Perl, Ruby, PHP, Python, Objective-C и R. Неофициальные привязки доступны для Qt и Go. . Открытый исходный код.

Безголовые браузеры, которые поддерживают JavaScript через эмулируемый DOM, обычно имеют проблемы с некоторыми сайтами, которые используют более продвинутые / неясные функции браузера или имеют функциональность, которая имеет визуальные зависимости (например, с помощью позиций CSS и т. Д.), Поэтому поддержка чистого JavaScript в этих браузерах, как правило, завершена, фактическая поддерживаемая функциональность браузера должна рассматриваться только как частичная.

(Примечание: в оригинальной версии этого поста упоминался только HtmlUnit, отсюда и комментарии.

149
ответ дан 24 November 2019 в 14:09
поделиться

Можно ли не просто использовать менеджер загрузок?

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

Вы можете написать что-то, что, скажем, действует как прокси-сервер, который перехватывает определенные ссылки и ставит их в очередь для последующей загрузки, или букмарклет Javascript, который модифицирует ссылки, чтобы перейти на "http: // localhost: 1234 / download_queuer? url =" + $ link.href и получить эту очередь для загрузки - но вы ' Я бы заново изобрел колесо менеджера загрузок, и с аутентификацией это может быть сложнее.

Или, если вы хотите, чтобы бит «вход в систему, кликните ссылки» также был автоматизирован - посмотрите в screen-scraping .. По сути, вы загружаете страницу через HTTP-библиотеку, находите ссылки для скачивания и скачиваете их.

Немного упрощенный пример с использованием Python:

import urllib
from BeautifulSoup import BeautifulSoup
src = urllib.urlopen("http://%s:%s@example.com" % ("username", "password"))
soup = BeautifulSoup(src)

for link_tag in soup.findAll("a"):
    link = link_tag["href"]
    filename = link.split("/")[-1] # get everything after last /
    urllib.urlretrieve(link, filename)

Это позволит загрузить каждую ссылку на example.com после аутентификации с помощью имя пользователя / пароль «username» и «password». Конечно, вы можете найти более конкретные ссылки, используя селектор HTML BeautifulSoup (например, вы можете найти все ссылки с классом «download» или URL-адреса, начинающиеся с http: // cdn. example.com ).

Вы можете сделать то же самое практически на любом языке ..

и с аутентификацией это может быть более сложным.

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

Немного упрощенный пример с использованием Python:

import urllib
from BeautifulSoup import BeautifulSoup
src = urllib.urlopen("http://%s:%s@example.com" % ("username", "password"))
soup = BeautifulSoup(src)

for link_tag in soup.findAll("a"):
    link = link_tag["href"]
    filename = link.split("/")[-1] # get everything after last /
    urllib.urlretrieve(link, filename)

Это будет загружать каждую ссылку на example.com после аутентификации с использованием имени пользователя / пароля «username» и «password». ». Конечно, вы можете найти более конкретные ссылки, используя селектор HTML BeautifulSoup (например, вы можете найти все ссылки с классом «download» или URL-адреса, начинающиеся с http: // cdn. example.com ).

Вы можете сделать то же самое практически на любом языке ..

и с аутентификацией это может быть более сложным.

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

Немного упрощенный пример с использованием Python:

import urllib
from BeautifulSoup import BeautifulSoup
src = urllib.urlopen("http://%s:%s@example.com" % ("username", "password"))
soup = BeautifulSoup(src)

for link_tag in soup.findAll("a"):
    link = link_tag["href"]
    filename = link.split("/")[-1] # get everything after last /
    urllib.urlretrieve(link, filename)

Это будет загружать каждую ссылку на example.com после аутентификации с использованием имени пользователя / пароля «username» и «password». ». Конечно, вы можете найти более конкретные ссылки, используя селектор HTML BeautifulSoup (например, вы можете найти все ссылки с классом «download» или URL-адреса, начинающиеся с http: // cdn. example.com ).

Вы можете сделать то же самое практически на любом языке ..

найдите ссылки для скачивания и загрузите их.

Немного упрощенный пример с использованием Python:

import urllib
from BeautifulSoup import BeautifulSoup
src = urllib.urlopen("http://%s:%s@example.com" % ("username", "password"))
soup = BeautifulSoup(src)

for link_tag in soup.findAll("a"):
    link = link_tag["href"]
    filename = link.split("/")[-1] # get everything after last /
    urllib.urlretrieve(link, filename)

Это будет загружать каждую ссылку на example.com после аутентификации с использованием имени пользователя / пароля «username» и «password». Конечно, вы можете найти более конкретные ссылки, используя селектор HTML BeautifulSoup (например, вы можете найти все ссылки с классом «download» или URL-адреса, начинающиеся с http: // cdn. example.com ).

Вы можете сделать то же самое практически на любом языке ..

найдите ссылки для скачивания и загрузите их.

Немного упрощенный пример с использованием Python:

import urllib
from BeautifulSoup import BeautifulSoup
src = urllib.urlopen("http://%s:%s@example.com" % ("username", "password"))
soup = BeautifulSoup(src)

for link_tag in soup.findAll("a"):
    link = link_tag["href"]
    filename = link.split("/")[-1] # get everything after last /
    urllib.urlretrieve(link, filename)

Это будет загружать каждую ссылку на example.com после аутентификации с использованием имени пользователя / пароля «username» и «password». Конечно, вы можете найти более конкретные ссылки, используя селектор HTML BeautifulSoup (например, вы можете найти все ссылки с классом «download» или URL-адреса, начинающиеся с http: // cdn. example.com ).

Вы можете сделать то же самое практически на любом языке ..

0
ответ дан 24 November 2019 в 14:09
поделиться

libCURL можно использовать для создания чего-то подобного.

0
ответ дан 24 November 2019 в 14:09
поделиться

Обратите внимание на twill , очень удобный язык сценариев для именно того, что вы ищете. Из примеров :

setlocal username <your username>
setlocal password <your password>

go http://www.slashdot.org/
formvalue 1 unickname $username
formvalue 1 upasswd $password
submit

code 200     # make sure form submission is correct!

Есть также Python API , если вам нужна большая гибкость.

5
ответ дан 24 November 2019 в 14:09
поделиться

Также вы можете использовать Live Http Headers (расширение Firefox) для записи заголовков, которые отправляются на сайт (Вход -> Ссылки -> Ссылка для скачивания), а затем реплицировать их с помощью php с помощью fsockopen. Единственное, что вам, вероятно, потребуется изменить, - это значение cookie, которое вы получаете со страницы входа.

0
ответ дан 24 November 2019 в 14:09
поделиться

Если ссылки известны (например, вам не нужно искать их на странице), вы, вероятно, можете использовать wget . Я считаю, что он будет управлять состоянием при нескольких выборках.

Если вы немного более предприимчивы, то я бы углубился в новые полезности в Python 3.0 . Они переделали интерфейс в свой HTTP-стек и, IMHO, имеют очень хороший интерфейс , который восприимчив к этому типу сценариев.

1
ответ дан 24 November 2019 в 14:09
поделиться

Вы можете использовать Watir с Ruby или Watin с моно.

0
ответ дан 24 November 2019 в 14:09
поделиться

За исключением автоматической загрузки файла (поскольку это диалоговое окно) это сделает форма выигрыша со встроенным веб-управлением.

Вы можете посмотреть Watin и Регистратор Ватина . Они могут помочь с кодом C #, который может войти на ваш сайт, перейти по URL-адресу и, возможно, даже помочь автоматизировать загрузку файла.

Однако YMMV.

1
ответ дан 24 November 2019 в 14:09
поделиться

Однажды я сделал это с помощью элемента управления ActiveX Internet Explorer (WebBrowser, MSHTML). Вы можете создать его экземпляр, не делая его видимым.

Это можно сделать с любым языком, поддерживающим COM (Delphi, VB6, VB.net, C #, C ++, ...)

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

2
ответ дан 24 November 2019 в 14:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: