c httpclient抓取网页(模拟网站的登录请求:最简单的方法是什么?)
优采云 发布时间: 2022-01-20 21:01c httpclient抓取网页(模拟网站的登录请求:最简单的方法是什么?)
您应该模拟 网站 的登录过程。最简单的方法是通过一些调试器(例如 Fiddler)检查 网站。
这是 网站 的登录请求:
POST https://members.morningstar.com/memberservice/login.aspx?CustId=&CType=&CName=&RememberMe=true&CookieTime= HTTP/1.1 Accept: text/html, application/xhtml+xml, */* Referer: https://members.morningstar.com/memberservice/login.aspx ** omitted ** Cookie: cookies=true; TestCookieExist=Exist; fp=001140581745182496; __utma=172984700.91600904.1405817457.1405817457.1405817457.1; __utmb=172984700.8.10.1405817457; __utmz=172984700.1405817457.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmc=172984700; ASP.NET_SessionId=b5bpepm3pftgoz55to3ql4me email_textbox=test@email.com&pwd_textbox=password&remember=on&email_textbox2=&go_button.x=36&go_button.y=16&__LASTFOCUS=&__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=omitted&__EVENTVALIDATION=omited
检查时,您会看到一些 cookie 和表单字段,例如“__VIEWSTATE”。您需要该字段的实际值才能登录。您可以使用以下步骤:
发出请求并丢弃“__LASTFOCUS”、“__EVENTTARGET”、“_ _EVENTARGUMENT”、“_ _ _ JSTENT”、“_ _EVVALIDATION”等字段;和饼干。使用上一个中的 CookieContainer 在同一页面上创建一个新的 POST 请求;使用废弃字段、用户名和密码构建帖子字符串。使用 MIME 类型 application/x-www-form-urlencoded。如果成功,则使用 cookie 保持登录状态以获取更多请求。
注意:您可以使用 htmlagilitypack 或 scrapysharp 来报废 html。ScrapySharp 为表单发布表单和浏览 网站 提供了易于使用的工具。
mental is process 是模拟一个人在 网站 上登录,一些登录是使用 AJAX 或传统的 POST 请求完成的,所以,你做的第一件事就是像浏览器一样的请求,在服务器响应中,你会获取 cookie、标头和其他信息,您需要使用这些信息来构建一个新请求,这是一个冗长的请求。
步骤是:
1)像浏览器一样构建请求以向应用程序验证自身。2)检查响应,并保存标头、cookie 或其他有用信息以保持与服务器的会话。3)使用从第二步采集的信息向服务器发出另一个请求。4)检查响应并使用数据分析算法或其他东西来提取数据。
暗示:
你这里没有使用 javascript 引擎,一些 网站 使用 javascript 来显示图形,或者在 DOM 文档中执行一些交互。在这种情况下,您可能需要使用 WebKit lib 包装器。
以上是C#学习教程:使用C#HttpClient登录网站,从另一个页面抓取信息分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望你多多关注——猴子科技屋()