热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在安全的网站中使用webclient?-Howtousewebclientinasecuresite?

Ineedtoautomateaprocessinvolvingawebsitethatisusingaloginform.Ineedtocapturesome

I need to automate a process involving a website that is using a login form. I need to capture some data in the pages following the login page.

我需要自动化涉及使用登录表单的网站的流程。我需要在登录页面后面的页面中捕获一些数据。

I know how to screen-scrape normal pages, but not those behind a secure site.

我知道如何屏幕抓取普通网页,而不是安全网站背后的网页。

  1. Can this be done with the .NET WebClient class?
    • How would I automatically login?
    • 我该如何自动登录?

    • How would I keep logged in for the other pages?
    • 我如何继续登录其他页面?

  2. 可以使用.NET WebClient类完成吗?我该如何自动登录?我如何继续登录其他页面?

4 个解决方案

#1


9  

One way would be through automating a browser -- you mentioned WebClient, so I'm guessing you might be referring to WebClient in .NET.

一种方法是通过自动化浏览器 - 你提到了WebClient,所以我猜你可能指的是.NET中的WebClient。

Two main points:

两个要点:

  • There's nothing special about https related to WebClient - it just works
  • 与WebClient相关的https没有什么特别之处 - 它只是起作用

  • COOKIEs are typically used to carry authentication -- you'll need to capture and replay them
  • COOKIE通常用于进行身份验证 - 您需要捕获并重放它们

Here's the steps I'd follow:

这是我要遵循的步骤:

  1. GET the login form, capture the the COOKIE in the response.
  2. 获取登录表单,捕获响应中的COOKIE。

  3. Using Xpath and HtmlAgilityPack, find the "input type=hidden" field names and values.
  4. 使用Xpath和HtmlAgilityPack,找到“input type = hidden”字段名称和值。

  5. POST to login form's action with user name, password, and hidden field values in the request body. Include the COOKIE in the request headers. Again, capture the COOKIE in the response.
  6. 使用用户名,密码和请求正文中的隐藏字段值POST登录表单的操作。在请求标头中包含COOKIE。再次,在响应中捕获COOKIE。

  7. GET the pages you want, again, with the COOKIE in the request headers.
  8. 再次使用请求标头中的COOKIE获取所需的页面。

On step 2, I mention a somewhat complicated method for automating the login. Usually, you can post with username and password directly to the known login form action without getting the initial form or relaying the hidden fields. Some sites have form validation (different from field validation) on their forms which makes this method not work.

在第2步,我提到了一种有点复杂的自动登录方法。通常,您可以使用用户名和密码直接发布到已知的登录表单操作,而无需获取初始表单或中继隐藏字段。某些网站在其表单上进行了表单验证(与字段验证不同),这使得此方法无效。

HtmlAgilityPack is a .NET library that allows you to turn ill-formed html into an XmlDocument so you can XPath over it. Quite useful.

HtmlAgilityPack是一个.NET库,允许您将格式错误的HTML转换为XmlDocument,以便对其进行XPath。非常有用。

Finally, you may run into a situation where the form relies on client script to alter the form values before submitting. You may need to simulate this behavior.

最后,您可能会遇到这样一种情况,即表单依赖客户端脚本在提交之前更改表单值。您可能需要模拟此行为。

Using a tool to view the http traffic for this type of work is extremely helpful - I recommend ieHttpHeaders, Fiddler, or FireBug (net tab).

使用工具查看此类工作的http流量非常有用 - 我建议使用ieHttpHeaders,Fiddler或FireBug(网络标签)。

#2


1  

You can easily simulate user input. You can submit form on the web page from you program by sending post\get request to a website.
Typical login form looks like:

您可以轻松模拟用户输入。您可以通过向网站发送post \ get请求从您的程序在网页上提交表单。典型的登录表单如下:


   
   

You can send a post request to the website providing values for Username & Password fields. What happens after you send your request is largely depends on a website, usually you will be redirected to some page. You authorization info will be stored in the sessions\COOKIE. So if you scrape client can maintain web session\understands COOKIEs you will be able to access protected pages.

您可以向网站发送帖子请求,提供用户名和密码字段的值。发送请求后会发生什么情况在很大程度上取决于网站,通常您会被重定向到某个页面。您的授权信息将存储在sessions \ COOKIE中。因此,如果你刮客户端可以维护网络会话\了解COOKIE,你将能够访问受保护的页面。

It's not clear from your question what language\framework you're going to use. For example there is a framework for screen scraping (including login functionality) written in perl - WWW::Mechanize

从您的问题中不清楚您将使用哪种语言\框架。例如,有一个用perl编写的屏幕抓取框架(包括登录功能) - WWW :: Mechanize

Note, that you can face some problems if site you're trying to login to uses java scripts or some kind of CAPTCHA.

请注意,如果您尝试登录的网站使用的是Java脚本或某种CAPTCHA,则可能会遇到一些问题。

#3


0  

Can you please clarify? Is the WebClient class you speak of the one in HTTPUnit/Java?

你能澄清一下吗? WebClient类是否是HTTPUnit / Java中的一个?

If so, your session should be saved automatically.

如果是这样,您的会话应自动保存。

#4


0  

It isn't clear from your question which WebClient class (or language) you are referring to.

从您的问题中不清楚您指的是哪个WebClient类(或语言)。

If have a Java Runtime you can use the Apache HttpClient class; here's an example I wrote using Groovy that accesses the delicious API over SSL:

如果有Java Runtime,您可以使用Apache HttpClient类;这是我使用Groovy编写的一个示例,它通过SSL访问美味的API:

   def client = new HttpClient()

   def credentials = new UsernamePasswordCredentials( "username", "password" )
   def authScope = new AuthScope("api.del.icio.us", 443, AuthScope.ANY_REALM)
   client.getState().setCredentials( authScope, credentials )

   def url = "https://api.del.icio.us/v1/posts/get"

   def method = new PostMethod( url )
   method.addParameter( "tag", tag )
   client.executeMethod( method )

推荐阅读
  • 在当前的软件开发领域,Lua 作为一种轻量级脚本语言,在 .NET 生态系统中的应用逐渐受到关注。本文探讨了 Lua 在 .NET 环境下的集成方法及其面临的挑战,包括性能优化、互操作性和生态支持等方面。尽管存在一定的技术障碍,但通过不断的学习和实践,开发者能够克服这些困难,拓展 Lua 在 .NET 中的应用场景。 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 为了评估精心优化的模型与策略在实际环境中的表现,Google对其实验框架进行了全面升级,旨在实现更高效、更精准和更快速的在线测试。新的框架支持更多的实验场景,提供更好的数据洞察,并显著缩短了实验周期,从而加速产品迭代和优化过程。 ... [详细]
  • Sanic 是一个类似于 Flask 的 Python 3.5 Web 服务器,以其出色的写入速度而著称。与 Flask 不同,Sanic 支持异步请求处理,这使得它在处理高并发请求时表现更加出色。通过利用 Python 的异步特性,Sanic 能够显著提高应用程序的性能和响应能力,适用于构建高性能的异步 Web 应用。 ... [详细]
  • 深入解析Tomcat:开发者的实用指南
    深入解析Tomcat:开发者的实用指南 ... [详细]
  • 本课程详细介绍了如何使用Python Flask框架从零开始构建鱼书应用,涵盖高级编程技巧和实战项目。通过视频教学,学员将学习到Flask的高效用法,包括数据库事务处理和书籍交易模型的实现。特别感谢AI资源网提供的课程下载支持。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 利用爬虫技术抓取数据,结合Fiddler与Postman在Chrome中的应用优化提交流程
    本文探讨了如何利用爬虫技术抓取目标网站的数据,并结合Fiddler和Postman工具在Chrome浏览器中的应用,优化数据提交流程。通过详细的抓包分析和模拟提交,有效提升了数据抓取的效率和准确性。此外,文章还介绍了如何使用这些工具进行调试和优化,为开发者提供了实用的操作指南。 ... [详细]
  • 在PHP中实现腾讯云接口签名,以完成人脸核身功能的对接与签名配置时,需要注意将文档中的POST请求改为GET请求。具体步骤包括:使用你的`secretKey`生成签名字符串`$srcStr`,格式为`GET faceid.tencentcloudapi.com?`,确保参数正确拼接,避免因请求方法错误导致的签名问题。此外,还需关注API的其他参数要求,确保请求的完整性和安全性。 ... [详细]
  • 本文深入解析了Django框架中的MVT(Model-View-Template)设计模式,详细阐述了其工作原理和应用流程。通过分析URL模式、视图、模型和模板等关键组件,读者将全面理解Django应用程序的架构体系,掌握如何高效地构建和管理Web应用。 ... [详细]
  • 本文深入探讨了Ajax的工作机制及其在现代Web开发中的应用。Ajax作为一种异步通信技术,改变了传统的客户端与服务器直接交互的模式。通过引入Ajax,客户端与服务器之间的通信变得更加高效和灵活。文章详细分析了Ajax的核心原理,包括XMLHttpRequest对象的使用、数据传输格式(如JSON和XML)以及事件处理机制。此外,还介绍了Ajax在提升用户体验、实现动态页面更新等方面的具体应用,并讨论了其在当前Web开发中的重要性和未来发展趋势。 ... [详细]
  • Java环境中Selenium Chrome驱动在大规模Web应用扩展时的性能限制分析 ... [详细]
  • 《Intel IA-32 架构软件开发人员手册详尽指南》提供了详尽的 IA-32 架构技术文档,涵盖指令集、系统编程和硬件接口等内容,为软件开发人员提供全面的技术支持和参考。该手册不仅包括详细的架构说明,还提供了丰富的编程示例和最佳实践,帮助开发人员更好地理解和应用 IA-32 架构。 ... [详细]
author-avatar
冰月雪镜樱1993
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有