mr_first, всё дело в том, что если l2tp ещё можно уговорить как-то на нестандартный порт, ipsec и nat-t работают строго по портам 500 и 4500, их нельзя изменить. Если бы тут ещё было pptp, то возникла бы проблема с протоколом gre, в котором вообще нет портов - его прокинуть можно только целиком в один конкретных хост.
В общем случае ничего нельзя гарантировать. WA может инвалидировать сессию просто потому, что она нынче пришла из другой страны или другого провайдера. Или потому что поменялся User-Agent.
Копировать AppData бессмысленно, так как в рамках защиты пользователей от копирующих данные из профиля браузера вирусов против этого есть защитные меры. Можно пытаться вытащить данные из куков и local store вручную и подсунуть в другой браузер. Но в целом это дурацкое занятие, неужели так трудно один раз отсканировать код?
На Heroku нет постоянной файловой системы, файл может в любой момент просто исчезнуть. Но можно использовать базу данных PostgreSQL даже в бесплатном тарифе.
Shandy, это прекрасное решение для некоторых отдельных задач. Например, когда хочется хранить данные настольного приложения. Например, Skype и Firefox используют sqlite для хранения некоторых данных. Однако любое решение имеет свою область применения, в том числе зависящую от инфраструктуры, и инфраструктура Heroku с sqlite несовместима.
beheh, sqlite3 вещь прикольная, но это не полноценная база, а просто файл. На вот этих вот бесплатных хостингах бесплатность достигается как раз тем, что они напихивают на сервера сотни клиентских приложений "до упора", могут в любой момент перенести любое приложение на другой сервер. Нельзя ожидать, что файлы приложения будут доступны ему в следующую секунду.
А раз уж всё равно используется "база" sqlite3, то надо просто слегка подкорректировать работу с базой и перейти на настояющую базу, которая на этом хостинге доступна.
Vadimganin, это нормальный подход: открыть файл, пройтись по сайту, записывая в файл, закрыть файл. А открывать файл стопицот раз, чтобы записать в него строчку и сразу закрыть, ненормально.
Я предлагал вынести не запись в файл, а его открытие:
with open(...) as f:
while True:
for element in items:
res = ...
f.write(res)
Gikerven, убрать $username и "Match что-то там" из return. Вообще, я бы посоветовал лучше изучить основы и попробовать поделать что-нибудь попроще ботов. Программирование "наугад" никогда не приводило к созданию чего-то нормально работающего.
Gikerven, на этом примере убрать echo и заменить на return true и return false. Лучше $username передавать в функцию, а не брать из глобальных переменных. В основном коде сделать:
if ($text == 'Хочу прогноз погоды' and user_access($username))