accedi al sito web utilizzando HTMLAgilityPack

c# html-agility-pack login login-script

Domanda

Nel codice seguente, posso impostare il valore del nome utente e della password utilizzando l'HTMLAgilitypack ma non posso richiamare l'evento click del pulsante di accesso (l'id nel codice sorgente del pulsante è "s1").

C'è comunque da fare per questo? Il motivo per cui non sto utilizzando il WebBrowser Web è perché ho bisogno di HTMLAgilityPack per recuperare i dati dalla pagina senza ID nel codice sorgente.

var doc = new HtmlWeb().Load("http://MYURL.com");
doc.DocumentNode.SelectSingleNode("name").SetAttributeValue("value", "MyUsername");
doc.DocumentNode.SelectSingleNode("password").SetAttributeValue("value", "MyPassword");

Risposta accettata

C'è comunque da fare per questo?

Non con ciò che fornisce la libreria HTML Agility Pack (HAP), non direttamente.

L'HAP è ottimo per ottenere una singola pagina e analizzarla, ma non è progettata per le interazioni continue. Le cose che mancano sono la gestione dei cookie, l'interazione con JavaScript e altro.

Per accedere probabilmente è necessario inviare un POST HTTP al server, inclusi i dati che si desidera - l'HAP non può essere d'aiuto.

Avrai bisogno di usare una classe come WebRequest per fare il post - suggerisco di guardare il violinista e usarlo per vedere come dovrebbe apparire la richiesta e costruirla di conseguenza, anche se questo potrebbe essere solo il primo passo.

Potresti voler indagare sull'uso di strumenti di automazione del web come selenio o WatiN .


Risposta popolare

È necessario osservare la richiesta POST tramite il violinista e vedere come è strutturata. per esempio :

    {"userName":"you","password":"pwd"}

Di solito, un sito riconoscerebbe che si è connessi ricevendo il proprio cookie nelle richieste.

HttpClient invia per impostazione predefinita i cookie ricevuti da un dominio specifico con ogni richiesta sequenziale a quel dominio (fino a quando non si disponga di quell'istanza HttpClient)

1) Creare un contenitore di cookie e assegnarlo all'istanza HttpClient.

2) Utilizzare HttpClient per effettuare la richiesta POST di accesso.

3) Utilizzare HttpClient per rendere la richiesta GET di dati.

4) Leggere la stringa html dalla risposta.

5) Utilizzare HtmlAgilityPack HtmlDocument per caricare il documento dalla stringa html e non dal Web (come mostrano la maggior parte degli esempi).

    {"userName":"you","password":"pwd"}



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché