Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

HtmlAgilityPack HtmlWeb load() throws an exception

295  
  moose старожил13.08.18 11:22
13.08.18 11:22 

причем это стало происходить где-то неделю назад. до этого почти год работало красиво. есть какие-нибудь идеи? вот код:



var webGet = new HtmlWeb();
webGet.UserAgent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0";
webGet.OverrideEncoding = Encoding.UTF7;
try {

string url = @"https://www.westlotto.com/wlinfo/WL_InfoService?gruppe=SpielplanToto&client=wlincl";
var document = webGet.Load(url);


с форматированием снова не получается, клацать на "код" не помогает : (

мэссэдж в иксэпшне: "The underlying connection was closed: An unexpected error occurred on a send."

браузером урл без роблем открывается. подсмотреть wireshark'ом заголовок того, что шлет моцилла, не получается, потому что шифровано, а других пособов это узнать я не знаю.

#1 
  moose старожил15.08.18 22:22
NEW 15.08.18 22:22 
в ответ moose 13.08.18 11:22, Последний раз изменено 15.08.18 22:24 (moose)

вот не ожидал, что из 20ки просмотревших никто не в курсе : ( жаль, как-то решил обходным путем, но если бы удалось разобраться с этой проблемой, было бы значительно проще.

вот попробуйте пойти на сайт по этой ссылке:


https://www.westlotto.com/wlinfo/WL_InfoService?gruppe=Spi...


а потом - попробуйте ЛЮБЫМ УДОБНЫМ ВАС СПОМОБОМ, но программно считать то же самое с этого урла. если получится - расскажите, как вам это удалось.

#2 
MrSanders старожил17.08.18 22:20
NEW 17.08.18 22:20 
в ответ moose 15.08.18 22:22

java 1.8, нет сейчас линукса с перлом под рукой.

package test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;

public class Reader {

    public static void main(final String[] args) throws IOException {
        final URL totoUrl = new URL("https://www.westlotto.com/wlinfo/WL_InfoService?gruppe=SpielplanToto&client=wlincl");
        BufferedReader reader = new BufferedReader(new InputStreamReader(totoUrl.openStream()));
        String line = null;
        do {
            line = reader.readLine();
            System.out.println(line);
        }while(line!=null);
    }
}

Скачивает содержимое:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta name="Audience"                    content="Alle">
    <meta name="Author"                        content="Westdeutsche Lotterie GmbH & Co. OHG">
    <meta name="Copyright"                    content="Westdeutsche Lotterie GmbH & Co. OHG">
    <meta name="Description"                content="Ergebnisse, Gewinnzahlen und Quoten fьr Lotto, KENO, GlücksSpirale, ODDSET KOMBI-Wette, ODDSET-TOP-Wette, Auswahlwette, Ergebiswette und NKL. Hier finden Sie alle Lottozahlen online.">
    <meta name="Language"                    content="de">
    <meta name="Publisher"                    content="Westdeutsche Lotterie GmbH & Co. OHG">

    <meta http-equiv="Content-Language"        content="de">
    <meta http-equiv="Content-Script-Type"    content="text/javascript">
    <meta http-equiv="Content-Style-Type"    content="text/css">
    <meta http-equiv="Content-Type"            content="text/html;charset=ISO-8859-15">

    <link rel="stylesheet" href="/infoservice/wlincl/styles/spielplan-toto.css"  type="text/css" media="all"    title="Westdeutsche Lotterie GmbH & Co. OHG">

    <title>TOTO-Spielplan und Ergebnisse</title>
</head>
<body>
<div id="page">
    <div class="headline">
        <div class="edge_top_left">
            <div class="edge_right"></div>
        </div>
        <div class="headline_text">
            <div class="headline_indent">
                <h1>TOTO-Spielplan vom 18.08.2018 bis 19.08.2018 (33. Ausspielung)</h1>
            </div>
        </div>
        <div class="edge_bottom_left">
            <div class="edge_right"></div>
        </div>
    </div>

и те де

Может проблема в том, с каким IP устанавливается соединение. Для

nslookup www.westlotto.com

Non-authoritative answer:
Name: a10-vip-wlcom.westlotto.de
Addresses: 2003:8:10:2:0:a10:afe6:42b7
194.25.144.211
Aliases: www.westlotto.com


и IPv6 и IPv4 занесены. Проверьте wireshark-ом куда запросы от браузера и от шарпа идут.

#3 
AlexNek патриот18.08.18 12:02
AlexNek
NEW 18.08.18 12:02 
в ответ moose 13.08.18 11:22
с форматированием снова не получается

Нужно к сожалению, ручками набрать тэг pre и поместить код внутрь, исключительно в режиме "код". Как делать на "автомате" не знаю


                var webGet = new HtmlWeb();
                webGet.UserAgent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0";
                webGet.OverrideEncoding = Encoding.UTF7;
                try
                {
                    string url = @"https://www.westlotto.com/wlinfo/WL_InfoService?gruppe=SpielplanToto&client=wlincl";
                    var document = webGet.Load(url);
                }
#4 
  moose старожил18.08.18 17:17
NEW 18.08.18 17:17 
в ответ MrSanders 17.08.18 22:20

и браузер, и сишарп идут по тому же адресу (длинному). оба посылают туда "Client Hello", но браузер получает ответ "Server Hello", а сишарп повторное подтверждение коннекта. дальше сишарм снова шлет "Client Hello", и на єтом соединение рвется.

но я вас страшно благодарен за код на жаве, меня это очень даже устраивает. я уже проверил, сработает ли он у меня, и убедился что да. осталось только найти, как на жаве html парсят и с mysql работают, но это уже не проблема.

#5 
  moose старожил18.08.18 17:18
NEW 18.08.18 17:18 
в ответ AlexNek 18.08.18 12:02

спасибо! я помню, вы мне когда-то это уже объяснили, и я вроде бы даже понял и разок использовал, но не смог найти, где это было : )

#6 
AlexNek патриот18.08.18 17:44
AlexNek
NEW 18.08.18 17:44 
в ответ moose 18.08.18 17:18

ну не страшно, если опять не получится могу расписать подробнее. Там действительно не просто.

#7 
AlexNek патриот18.08.18 17:59
AlexNek
NEW 18.08.18 17:59 
в ответ moose 18.08.18 17:17

А зачем Вам Ява когда ваш код работает без проблем, вот попробуйте. Только либу нужно загрузить для сборки.

#8 
  moose старожил18.08.18 21:13
NEW 18.08.18 21:13 
в ответ AlexNek 18.08.18 17:59

спасибо, действительно работает. только не в моей "рабочей" версии (VS2010 : ). потому как версия HtmlAgilityPack, которая работает, с моей версией визуал студии не совместима, видимо. по-крайней мере NuGet'ом не устанавливается. пришлось установить 2017, чтобы попробовать. может, на нее стоит вообще пересесть? я вообще страшно не люблю всяких пересадок. у вас уже есть опыт, расскажите, что говорит "за"?

#9 
AlexNek патриот18.08.18 22:12
AlexNek
NEW 18.08.18 22:12 
в ответ moose 18.08.18 21:13
пришлось установить 2017, чтобы попробовать. может, на нее стоит вообще пересесть?

А смысл сидеть на 2010?

После второго сервис пака мы всегда переходим на новую.

Проблемы будут с различными "дополнениями" для студии. Если есть что старое, то не пойдет в принципе.

Но все что мне надо есть и для 2017

Отличия от 2010 никак не вспомню, потому как была еще 2015 до того

https://docs.microsoft.com/en-us/visualstudio/ide/whats-ne...


Кстати, попробовал перекомпилить проект под НЕТ 4.0 - не работает

System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a send. ---> System.IO.IOException: Authentication failed because the remote party has closed the transport stream.

#10 
AlexNek патриот18.08.18 22:26
AlexNek
NEW 18.08.18 22:26 
в ответ AlexNek 18.08.18 22:12

4.0 и 4.5 выдают ошибку, только с 4.6.1 начинает работать (Можно еще 4.6 попробовать)

#11 
  moose старожил18.08.18 22:49
NEW 18.08.18 22:49 
в ответ AlexNek 18.08.18 22:26

вот видите, как оно нехорошо. это, вообще, не самый удобный сайт для получения этой информации, но другие с самого начала у меня не прочитались, поэтому остановился на этом. видимо, эти теперь тоже пересели на какие-то новые secure features, и тоже перестали у меня читаться. уверен, жава читала все с самого начала. потому что жава - это в первую очередь интернет и все, что с ним связано. если там что-то отстанет от жизни - жизнь остановится. а сишарп может жить дальше, потом догнать. по возможности. так что скорее всего таки сделаю считывающий кусок на жаве, это будет цукунфт зиха : )

#12 
Murr_0001 знакомое лицо18.08.18 22:55
Murr_0001
NEW 18.08.18 22:55 
в ответ AlexNek 18.08.18 22:12

Значит клиент просит нечто под названием CR4 (часть ssl протокола), а сервер, после последних апдейтов, уже не подерживает. У меня на старой ХР такое регулярно.

#13 
  moose старожил18.08.18 23:08
NEW 18.08.18 23:08 
в ответ Murr_0001 18.08.18 22:55

наверное, что-то в тоде этого, только наоборот. т.к. у меня версия клиента не менялась, а руки чесались у серверных парней. они внедрили что-то суперсовременное, и теперь никто не перехватит по пути данные о том, кто с кем играет, но я теперь не могу их тоже получить. обновляшки - это хорошо, но иногда достает.

#14 
  moose старожил19.08.18 09:33
NEW 19.08.18 09:33 
в ответ AlexNek 18.08.18 22:26, Последний раз изменено 19.08.18 09:37 (moose)

причем HtmlAgilityPack здесь ни при чем: он использует средства фреймворка, а оно не срабатывает (пробую ваш волшебный тэг, надеюсь, сработает):

	using (var client = new System.Net.WebClient()) {
                string html = client.DownloadString("https://www.westlotto.com/wlinfo/WL_InfoService?gruppe=SpielplanToto");
                var doc = new HtmlAgilityPack.HtmlDocument();
                doc.LoadHtml(html);
                ...
       }



#15