[英]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.