簡體   English   中英

使用C#登錄網頁

[英]Login to web page using C#

我想登錄到某個網頁 ,並以登錄用戶的身份下載幾個頁面。 我認為從理論上來說,基於對這個stackoverflow問題的回答,我知道該怎么做,但是我不知道應該在哪里將登錄憑據放在地址中。 在上面的問題中,這很明顯,但是在Aukro中並不是那么明顯。
我將非常感謝任何建議... :)

一個棘手的部分是,該登錄頁面設置了一堆會話cookie,並為會話添加了一些唯一的查詢字符串參數。 大概,您需要為創建的每個會話從服務器檢索良好的值。

當您登陸https://ssl.aukro.cz/enter_login.php時 ,您將獲得302 Found(實際上用於重定向)。 完整的請求如下所示:

Date    Wed, 26 Aug 2009 17:50:05 GMT
Server  Apache
Vary    Accept-Encoding
Set-Cookie  ws2=acda7c76687f; expires=Wed, 26-Aug-2009 18:20:05 GMT; path=/; domain=.aukro.cz
Expires Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control   no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma  no-cache
Location    https://ssl.aukro.cz/enter_login.php?session=NmQ2YQFRBVABVgFRVFQAXVRXVFZXWlcHBVRVWAcGUF0OUVJWVVRRXFVUBFFTAAcGAFxUA1NSY2JkZQ%3D%3D&global_login_hash=e16bd60f566a0ae3752997bf21844c4ec2bd0d22&session_login_hash=fecd7825582b6d038d288f67c368090aa369c85d&url=OTFhY1hFRkYDHk4UR0YcV0xaEwweUkgZXEMTDEIeU1VaVBIQb1RARFZDTxNYQQ1YVm4FCkIMAzAxMjY%3D
Content-Encoding    gzip
Content-Length  26
Keep-Alive  timeout=2, max=9999
Connection  Keep-Alive
Content-Type    text/html; charset=UTF-8

您需要獲取URL位置及其設置的cookie(“ ws2”)。 然后,您需要放到您獲取的重定向URL上,並獲取它設置的其余cookie,分別是ws2stsd_refrqeppo_login

然后,您需要使用上面提到的表單元素以及您提供的鏈接來填充POST正文。

不知道您要登錄的這個站點的任何信息,我冒險猜測一下,如果您沒有獲得良好的會話變量和cookie並將其包含在每個邏輯請求中,則登錄嘗試可能會失敗。

長話短說,只需使用Fiddler或Firebug捕獲登錄會話的外觀,然后使用您已經看到的技術對其進行模仿。

這可能是一種有效的替代技術

所需的控件為:

ID = “USER_LOGIN”

ID = “USER_PASSWORD”

value =“Přihlásit”(顯然是“登錄”的捷克語)

您將需要查看網頁的來源,並找到用於登錄的<form> 這將為您提供您需要發布到的URL。 您將需要指定<input>標記中的所有變量,就像它們在鏈接的問題中所做的一樣。

在這種情況下,您需要指定: session, global_login_hash, session_login_hash, url, request_server, user_login, user_password

確定需要提交的內容的一種方法是使用Fiddler2之類的代理,然后使用其代理設置為Fiddler的Web瀏覽器並登錄到網頁。 Fiddler將為您提供請求和響應的標題和文本。

您需要創建HTTPS POST請求,並在application/x-www-form-urlencoded正文中提供以下值:

user_login = <user name>
user_password = <password>
session = "ZTEzMw9RAAcGUlIABQgDVlcBBVAAB1NRAAFQClAAUQADCAdRDgNRAQcDVwsHBQADVAYAAAYBNjA1Yg=="
global_login_hash = "c6da0c2fa41454f62c80d9cc688f4303ebebb9b3"
session_login_hash = "8e5190abcb4cccee78b7331a616c4fb723f7fe41"
url = "OTFhY1hFRkYDHk4UR0YcV0xaEwweUkgZXEMTDEIeU1VaVBIQb1RARFZDTxNYQQ1YVm4FCkIMAzAxMjY="
request_server = "ssl.aukro.cz"

您可能首先提供user_loginuser_password值,然后忽略其余值,但是不可能確切知道服務器需要什么。 編碼后的值當然不可重用,並且如果需要,則必須在登錄之前從登錄頁面中將其擦除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM