Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 230

Получить html страницы не используя webBrowser и WebClient

26.05.2017, 21:50. Показов 2424. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Следующий код нормально получает html страницы, но там написано, что используется устаревший браузер и фейсбук его не поддерживает. Есть ещё способы получить html, не используя webBrowser?
C#
1
2
3
            WebClient client = new WebClient();
            client.Encoding = Encoding.UTF8;
            string HTML = client.DownloadString("https://www.facebook.com/profile.phpid="+ id пользователя +"&sk=about&section=education" );
Вот что я получаю вместо нужной страницы
HTML5
1
2
3
4
5
... "><h2 class="ptl pbm _6n _6s _6v">Обновите свой браузер</h2><div class="pvm phl unsupportedBrowserText _6q _6t
 _mf">Вы используйте веб-браузер, который не поддерживается Facebook.<br />Для более удобного использования, 
посетите один из этих сайтов и установите последнюю версию предпочитаемого вами браузера:</div><a class="mvl 
pvm phl unsupportedBrowserBrowser" href="https://l.facebook.com/l.php
u=https%3A%2F%2Fwww.google.com%2Fchrome%2Fbrowser% ...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.05.2017, 21:50
Ответы с готовыми решениями:

WebBrowser. Как получить Html код страницы открытой в "webBrowser" в правильной кодировке?
Пробую получить Html код страницы открытой в &quot;webBrowser&quot;. public string GetHTMLCodPage() { string htmlCodPage; ...

WebBrowser: получить данные со страницы, используя GetElements
Здравствуйте форумчане! Как с помощью веб браузера вытащить из загруженой страницы данные вот такого типа: &lt;div...

Получить html код текущей страницы в WebBrowser
Пробую так content = webBrowser1.DocumentText; var htmlText = content.ToString(); if (htmlText.IndexOf(&quot;link&quot;) &gt; 1) ... В итоге...

9
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
26.05.2017, 22:11
Попробуйте указать в клиенте корректный UserAgent:
C#
1
2
WebClient client = new WebClient();
client.Headers.Add(HttpRequestHeader.UserAgent, "Нужный агент");
Цитата Сообщение от Darkness190 Посмотреть сообщение
Есть ещё способы получить html, не используя webBrowser?
Еще есть HttpWebRequest, плюс сторонние библиотеки, например, xNet.
Ну и еще вариант, указать что нужно использовать в webBrowser IE той версии, которая установлена в системе, а не устаревший.
0
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 230
26.05.2017, 23:29  [ТС]
Цитата Сообщение от Shogun31337 Посмотреть сообщение
Попробуйте указать в клиенте корректный UserAgent:
Что-то страшное он выдаёт если указать UserAgent
C#
1
client.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0)");
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<html><head><title>Redirecting...</title>
<script>__DEV__=0;
_script_path = "\/profile.php";
var uri_re=/^(?:(?:[^:\/?#]+):)?(?:\/\/(?:[^\/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?/,target_domain='';
window.location.href.replace(uri_re,function(a,b,c,d){var e,f,g;e=f=b+(c?'?'+c:'');
if(d){d=d.replace(/^(!|%21)/,'');
g=d.charAt(0);
if(g=='/'||g=='\\')e=d.replace(/^[\\\/]+/,'/');}
if(e!=f)window.location.replace(target_domain+e);
});
</script><script type="text/javascript">
/*<![CDATA[*/(function(){function si_cj(m)
{setTimeout(function(){new Image().src="https:\/\/error.facebook.com\/common\/scribe_endpoint.php?c=si_clickjacking&t=1933"+"&m="+m;},5000);}
if(top!=self && !false){try{if(parent!=top){throw 1;}
var si_cj_d=["apps.facebook.com","apps.beta.facebook.com"];
var href=top.location.href.toLowerCase();
for(var i=0;i<si_cj_d.length;i++)
{if (href.indexOf(si_cj_d[i])>=0){throw 1;
}}si_cj("3 ");}catch(e){si_cj("1 \t");
window.document.write("\u003Cstyle>body * {display:none !important;}\u003C\/style>\u003Ca href=\"#\" onclick=\"top.location.href=window.location.href\" style=\"display:block !important;padding:10px\">\u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 Facebook.com\u003C\/a>");/*x_LAxFtw*/}}}())/*]]>*/
</script>
<script>window.location.replace("https:\/\/ru-ru.facebook.com\/people\/\u0410\u043b\u0451\u043d\u0430-\u0417\u043e\u0442\u043e\u0432\u0430\/100016964324721");
</script>
<meta http-equiv="refresh" 
content="0;
url=https://ru-ru.facebook.com/people/Алёна-Зотова/100016964324721" />
</head><body></body></html>
Это весть код

Цитата Сообщение от Shogun31337 Посмотреть сообщение
Еще есть HttpWebRequest
Так же требует обновления браузера

Цитата Сообщение от Shogun31337 Посмотреть сообщение
Ну и еще вариант, указать что нужно использовать в webBrowser IE той версии, которая установлена в системе, а не устаревший.
Как раз через webBrowser я получаю нужный html, но проблема в том что мне нужно считывать html в цикле больше 50 раз. Из-за чего у меня приложение использует 4 гб оперативной памяти и вылетает, что не удивительно для 32-х битной проги.
0
 Аватар для Shogun31337
557 / 534 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
26.05.2017, 23:51
Цитата Сообщение от Darkness190 Посмотреть сообщение
Что-то страшное он выдаёт если указать UserAgent
Именно с фейсбуком не работал, но по опыту ВК и ОК, могу сказать, что одного UserAgent для корректного запроса мало. Браузер отправляет на сервер кучу параметров (и заголовков), без которых запрос не будет считаться корректным. Если собираетесь работать на низком уровне, то посмотрите, для начала, как это делает браузер, а уж потом пытайтесь имитировать его работу. В ином случае, мало что получится. Либо же используйте API. Там, насколько я знаю, нужно лишь пройти авторизацию и получить токен, а всякие мелочи типа UserAgent сервер интересовать не будут. Хотя, получить права для приложения в фейсбуке - тот еще геморрой.
Цитата Сообщение от Darkness190 Посмотреть сообщение
Так же требует обновления браузера
Он всего лишь требует указания UserAgent'а. Впрочем, HttpWebRequest - это еще более низкий уровень, чем WebClient. WebClient основан на WebRequest.
0
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 230
27.05.2017, 12:35  [ТС]
Цитата Сообщение от Shogun31337 Посмотреть сообщение
Браузер отправляет на сервер кучу параметров (и заголовков), без которых запрос не будет считаться корректным
Как обычно в программировании всё слишком заморочено

Цитата Сообщение от Shogun31337 Посмотреть сообщение
Либо же используйте API
Их апи - гемор
0
Эксперт .NET
 Аватар для Usaga
14129 / 9349 / 1350
Регистрация: 21.01.2016
Сообщений: 35,139
27.05.2017, 12:43
Цитата Сообщение от Darkness190 Посмотреть сообщение
Как обычно в программировании всё слишком заморочено
Вы знаете как сделать протокол HTTP проще без потери функциональности?..
0
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 230
27.05.2017, 14:25  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Вы знаете как сделать протокол HTTP проще без потери функциональности?
Я не говорю, что знаю.
Я имею в виду, чтобы уметь программировать, нужно обладать какой-то неординарной логикой
0
Эксперт .NET
 Аватар для Usaga
14129 / 9349 / 1350
Регистрация: 21.01.2016
Сообщений: 35,139
27.05.2017, 15:58
Darkness190, нужна самая обычная логика и много терпения. Многие вещи сложны не потому, что их придумывал наркоман сумасшедший (хотя такое тоже бывает), а потому, что они в принципе сложны. Куча параметров в заголовке - необходимость, слишком много вещей имеет значение в этом протоколе.
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
28.05.2017, 09:43
Разработчики разных проектов не зря делают API, абы дать возможность другим разрабам что-то делать свое. Если так сильно хочется использовать webBrowser, можете сначала сниффить всю инфу, а далее уже эмулировать тексты запросов.
0
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 230
28.05.2017, 13:06  [ТС]
Почтальон, Не спорю. То что я хочу сделать на фейсбуке, через апи проще и быстрее. Но из-за политики безопасности мне не доступны нужные мне методы. Поэтому остаётся только считывать html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.05.2017, 13:06
Помогаю со студенческими работами здесь

Получить html код страницы, отображаемой в WebBrowser
Как получить html код страницы, отображаемой в WebBrowser, находящемся на WPF форме?

Как получить координаты html элемента страницы в WebBrowser?
Нужно переместить курсор мыши на html элемент перед нажатием на него. Такое вообще возможно? Добавлено через 1 час 21 минуту Еще...

Получить html код последней страницы, открытой в WebBrowser
С помощью webbrowser (Navigate) перехожу по ссылке. Нажимаю на полученной странице ссылку и в webbrowser-e отображается новая...

Как получить HTML код элемента WEB страницы от компонента WebBrowser
Просмотрел по данному вопросу уйму тем на форумах, но для частного случая страничек того вида, который мне нужен, решения так и не нашел....

Как используя WebResponse и WebRequest получить исходный html код страницы zakupki.gov.ru
Здравствуйте. Подскажите пожалуйста как передать строку с помощью WebResponse + WebRequest и получить исходный код страницы. Я находил...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru