Элемент управления WebBrowser: отключите межсайтовую XSS-фильтрацию или другой способ полностью обработать JS в HTML - PullRequest
3 голосов
/ 25 июня 2011

Я пытаюсь использовать свой веб-браузер для получения даты получения с определенной страницы, включая все содержимое подстраницы.Проблема в том, что некоторые из подстраниц находятся в отдельном домене, и, таким образом, я получаю сообщение об ошибке разрешения, когда пытаюсь получить доступ к фрейму [через document.windows.frames (i) .document].

ТеперьЯ понимаю причину, по которой это происходит, как указано в http://msdn.microsoft.com/en-us/library/ms533028.aspx. Однако, в отличие от пользователя, просматривающего сайт, который не хочет, чтобы javascript прослушивал их историю / файлы cookie, я физически открываю свою программу и запускаю приложение для этой цели..

Есть ли обходной путь, чтобы сделать это, даже если мне придется вручную изменить настройки безопасности?Я попытался включить все свои настройки в IE, чтобы разрешить, и все еще та же ошибка.Я буду запускать приложение только локально, и никто не будет просматривать IE, поэтому я могу буквально изменить все, что нужно, чтобы заставить это работать (даже установить более старую версию IE, которая может разрешить это, но все еще может обрабатывать обработку JS).

Обратите внимание, что причина, по которой я использую веб-браузер, заключается в том, что большая часть данных, к которым я буду обращаться, генерируется JS, поэтому мне нужно получить доступ к DOM после того, как JS обработал / сгенерировал HTML.Из-за этого просто использовать SOCKETS для получения HTML на самом деле не вариант.Даже если бы у меня был HTML, мне все еще нужен какой-то тип движка для обработки всех элементов DOM, основанных на JavaScript.Если вам известна альтернатива этому, это тоже вполне приемлемо!

Заранее спасибо!

Ответы [ 3 ]

2 голосов
/ 25 июня 2011

Вы можете создать прокси на своем сервере для извлечения данных, и вы загрузите его из собственного домена в скрытый div, а затем сможете использовать JS для получения необходимых данных из HTML

0 голосов
/ 07 мая 2013

Приложение HyperText может быть вариантом в подобных ситуациях. HTA-приложения запускаются в основном окне браузера, но с разрешениями исполняемого файла. См. эту страницу для получения дополнительной информации о HTA. Обратите внимание, что HTA обеспечивают защиту для фреймов, не относящихся к приложениям, и фреймов.

0 голосов
/ 26 июня 2011

Вы можете создать динамическую прокси-страницу следующим образом:

    using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.UI;

public partial class TestPage : Page
{
    private WebRequest _request;
    protected void Page_Load(object sender, EventArgs e)
    {
        string text;
        string url = Request["UrlToGet"];
        _request = (HttpWebRequest)
            WebRequest.Create(url);
        using (WebResponse response = _request.GetResponse())
        {
            using (StreamReader reader =
                new StreamReader(response.GetResponseStream()))
            {
                text = reader.ReadToEnd();
            }
        }
    }
}

Все, что вам нужно сделать, это поместить запрошенный URL-адрес в QueryString или в данные публикации, и вы получите содержимое страницы внутри.текст строки

...