Excel VBA и InternetExplorer, вызывающие ошибки на сайте - PullRequest
0 голосов
/ 07 декабря 2009

У меня есть несколько «умных» пользователей, которые написали электронную таблицу Excel, которая автоматизирует некоторые из их задач в нашей внутренней сети / расписании. Кажется, что созданный экземпляр Internet Explorer не выполняет всего, чего я ожидаю от браузера, например установить куки. Есть ли способ определить, попадает ли пользователь на веб-сайт с экземпляром объекта VBA com в Internet Explorer? Я не могу удержать пользователей от создания креативных решений, но я хочу быть в состоянии справиться с ними. спасибо

Ответы [ 2 ]

1 голос
/ 08 декабря 2009

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

Однако, если вы настаиваете на попытке сломать приложение вашего пользователя:) ... Проверьте свойство DOM's Window.Visible. Это не верный ход, но многие веб-скребки просто незаметно «роботизируют» экземпляр Internet Explorer. Кроме того, возможно, файлы cookie не устанавливаются, они просто удаляются на лету. Если вы пытаетесь ограничить количество посещений страниц с помощью файлов cookie, то вам следует учитывать основную истину, что любые данные, хранящиеся на стороне клиента, могут быть изменены. Попробуйте хранить такую ​​информацию на стороне сервера. Как упоминалось ранее, некоторые методы не предоставляют правильные заголовки, так что вы можете проверить их, и, наконец, всегда есть популярная «Captcha». Конечно, ни один из этих методов не является надежным, и все они имеют свои недостатки.

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

Если вы действительно хотите убить приложение, лучше определить, какая потребность не удовлетворяется, и удовлетворить ее. Менеджеры не хотят, чтобы имели для поддержки и поддержки 100 различных небольших приложений, если они не нуждаются в этом. Если есть «законный» беспроблемный способ удовлетворения потребностей, он обычно используется. Зачем? Каждый испытывает нехватку времени, поэтому выигрывает самое простое решение. Если вы делаете свое приложение лучше, чем то, которое вы пытаетесь аннулировать, то зачем заниматься собственной разработкой? Менеджер бизнес-подразделения довольно быстро направит своего сотрудника обратно в бизнес, если ему дадут оправдание.

0 голосов
/ 08 декабря 2009

На вашем сервере вы можете попробовать проверить строку UserAgent в RequestHeader. Это может позволить вам различать стандартные IE и Excel VBA - зависит от того, как ваши опытные пользователи делают это. Вы можете попросить своих пользователей установить строку UserAgent, которую они отправляют, в известное значение.

Пример:

Dim oHTTP As WinHttp.WinHttpRequest
Set oHTTP = New WinHttp.WinHttpRequest
oHTTP.Open Method:="GET", url:="http://stackoverflow.com/", async:=False
oHTTP.setRequestHeader "User-Agent", "ExcelVBA-UserApp"

Альтернативно, почему бы не настроить отдельный URL-адрес доступа только для использования вашим пользователем Excel. Или создайте для них простой RESTFul API. Это может быть сделано разными способами - постарайтесь сделать его простым и легким в обслуживании.

Ваши "умные" пользователи могут попытаться опубликовать вопрос в SO. Функциональность существует для автоматизации IE лучше, чем предлагает ваш вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...