Если у вас есть пользователи, значит, у вас есть система входа в систему, поэтому с того момента, как пользователь использует функции или какое-либо действие, сохраните атрибут в своей модели на сервере с датой начала, после чего вы можете контролировать показ / скрыть содержимое и соответственно представить оплату непотребляемых IAP
.NET содержит System.Windows.Forms.WebBrowser . Вы можете создать экземпляр этого, отправить его по URL, а затем легко проанализировать HTML на этой странице. Затем вы можете переходить по любым ссылкам, которые вы нашли, и т. Д.
Я работал с этим объектом лишь минимально, так что я не эксперт, но если вы уже знакомы с .NET, то, вероятно, стоит посмотреть.
Вот список браузеров, которые я знаю без заголовка:
Безголовые браузеры, которые поддерживают JavaScript через эмулируемый DOM, обычно имеют проблемы с некоторыми сайтами, которые используют более продвинутые / неясные функции браузера или имеют функциональность, которая имеет визуальные зависимости (например, с помощью позиций CSS и т. Д.), Поэтому поддержка чистого JavaScript в этих браузерах, как правило, завершена, фактическая поддерживаемая функциональность браузера должна рассматриваться только как частичная.
(Примечание: в оригинальной версии этого поста упоминался только HtmlUnit, отсюда и комментарии.
Можно ли не просто использовать менеджер загрузок?
Есть лучшие, но 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
).
Вы можете сделать то же самое практически на любом языке ..
libCURL можно использовать для создания чего-то подобного.
Обратите внимание на 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 , если вам нужна большая гибкость.
Также вы можете использовать Live Http Headers (расширение Firefox) для записи заголовков, которые отправляются на сайт (Вход -> Ссылки -> Ссылка для скачивания), а затем реплицировать их с помощью php с помощью fsockopen. Единственное, что вам, вероятно, потребуется изменить, - это значение cookie, которое вы получаете со страницы входа.
Если ссылки известны (например, вам не нужно искать их на странице), вы, вероятно, можете использовать wget
. Я считаю, что он будет управлять состоянием при нескольких выборках.
Если вы немного более предприимчивы, то я бы углубился в новые полезности в Python 3.0 . Они переделали интерфейс в свой HTTP-стек и, IMHO, имеют очень хороший интерфейс , который восприимчив к этому типу сценариев.
За исключением автоматической загрузки файла (поскольку это диалоговое окно) это сделает форма выигрыша со встроенным веб-управлением.
Вы можете посмотреть Watin и Регистратор Ватина . Они могут помочь с кодом C #, который может войти на ваш сайт, перейти по URL-адресу и, возможно, даже помочь автоматизировать загрузку файла.
Однако YMMV.
Однажды я сделал это с помощью элемента управления ActiveX Internet Explorer (WebBrowser, MSHTML). Вы можете создать его экземпляр, не делая его видимым.
Это можно сделать с любым языком, поддерживающим COM (Delphi, VB6, VB.net, C #, C ++, ...)
Конечно, это быстрый и быстрый способ -грязное решение и может не подходить в вашей ситуации.