[英]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,分別是ws2
, stsd_refr
和qeppo_login
。
然后,您需要使用上面提到的表單元素以及您提供的鏈接來填充POST正文。
不知道您要登錄的這個站點的任何信息,我冒險猜測一下,如果您沒有獲得良好的會話變量和cookie並將其包含在每個邏輯請求中,則登錄嘗試可能會失敗。
長話短說,只需使用Fiddler或Firebug捕獲登錄會話的外觀,然后使用您已經看到的技術對其進行模仿。
您將需要查看網頁的來源,並找到用於登錄的<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_login
和user_password
值,然后忽略其余值,但是不可能確切知道服務器需要什么。 編碼后的值當然不可重用,並且如果需要,則必須在登錄之前從登錄頁面中將其擦除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.