- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在处理一个具有挑战性的问题:找到一个解决方案以在预订流程后获取数据。基本上,我有一个带有表单(SLIM FORM)的页面,我需要自动填写来自 vendor 表单的信息(例如 easyjet.com 或 hotels.com,基本上是任何预订网站)。例如:https://secure.booking.com/hotel/es/royal.html?sid=1c2bab12a0c64a541728840f52cd6401;errorc_checkin_invalid=checkin;errorc_intro_error_message_invalid=intro_error_message;errorv_stage=1;errorv_checkin=2011-07-05;errorv_hotel_id=90228;errorv_installment_count=1;errorv_hostname=www.booking.com;errorv_nr_rooms_9022801_80638194_0=1;errorv_interval=1我预订中的信息是我需要得到的。
我做了一些测试,现在是我发现的:
不可能将两者都放在同一页面上,因为使用 cURL 时,没有与外部服务器的通信,而使用 iframe 时,它会在 iframe 的 src 更改时尽快离开页面。
因此,我决定预订流程应该在预订提供商 (easyjet.com...) 域中的专用页面上进行
1) 我考虑在真实网站上进行预订是否正确,或者有没有办法在我的页面上包含外部网站并在其中执行整个预订过程(主要是填写出发日期、到达日期等表格) ...)?
如果不可能,我用 cURL 做了一些测试并得出了这个结论:
_ 我将不得不为每个提供商定义合适的正则表达式,我的印象是有些提供商具有识别 cURL 并阻止它的机制。 (例如 lufthansa.com)但它与其他网站(booking.com)配合得很好
我还有两个问题:
2) 是否有比 cURL 更好的解决方案来解析页面中的某些 HTML(特别是因为如果 URL 不包含 sessionID,它就不起作用)?我在想也许可以使用像 Selenium 这样的东西......
3) 如何在其他选项卡或窗口上触发我的 cURL 解析? (我在想一个类似于书签的系统,可以触发一些JavaScript代码)
感谢您的回答,抱歉太长了:-)
更新:根据我收到的答复,这里有一些新想法:对于大型 vendor (easyjet、hotels.com 等...),我将使用可用的 API。对于小型 vendor (例如 http://www.hotel-gare-clermont.com/en,1,6217.html ),我认为代理解决方案值得另一种解决方案,并且我不会收到来自“Hotel de la Gare”的任何关于法律问题的投诉,同时增加这些小型 vendor 的知名度。你怎么看?
最佳答案
1) 这是可能的,但它有边缘非法的副作用。您不能只对提供商表单进行 scape 处理并在 iframe 中保留他们的页面。如果提供者发现您这样做,您可能会被起诉。
您需要与各个 vendor 签订合作协议(protocol)。有了这个协议(protocol),他们可能会开放一个 API(应用程序编程接口(interface))供您使用。这将使您能够更直接地查询他们的网站,并以干净且经过批准的方式进行预订。
2) cURL 是一个很棒的库,它可以很好地完成获取网页的工作。互联网上有很多将页面获取到字符串的示例。就解析该字符串而言,在理想情况下,您可以使用 XML 解析器。不幸的是,HTML 页面的构造非常糟糕,这使得它们难以解析。大多数编码人员在必须解析 HTML block 时倾向于使用正则表达式。
为了获得 session ID,您的第一个 cURL 请求应该发送到 example.com 上的登录表单。通过尝试获取 http://example.com?username=bob&pass=secret 来伪造登录表单的提交.您可以通过在服务器响应中查找文本“成功登录”或类似内容来检查登录是否有效。您可以从响应 header 中获取 session ID(如果它是 cookie)。后续的 cURL 请求应该发送您的 cookie。
3) cURL 在服务器端运行,因此完全不知道您打开的选项卡。您可以使用 Javascript 来查询选项卡,但我敢打赌,出于安全原因,大多数浏览器都不允许您这样做。
关于php - 在外部网站上完成预订后检索信息(cURL、iFrame...?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5674856/
我有这个网站,这个特定页面是安全的,但是当它回发时,它回发到一个不安全的页面。如何解决? 我正在使用 ASP.NET 向导。我有这个页面 - checkout.aspx,页面包含这个控件 checko
我有 2 个 azure 网站 - 两个独立的项目 我现在有 2 个网址: myazurewebsite.azurewebsites.net myazureblog.azurewebsites.net
我有 2 个 azure 网站 - 两个独立的项目 我现在有 2 个网址: myazurewebsite.azurewebsites.net myazureblog.azurewebsites.net
环境: 旧网站: React 托管在 Heroku URL( http://sameurl.com ) 新网站: Java 托管在 Heroku URL ( http://sameurl.com )
我已在 Windows Azure 上注册了一个测试帐户来对其进行测试。我构建了一个 Hello world ASP.NET Web 应用程序 + 数据库只是为了测试。 我安装了 Visual Stu
我有一个可以收集和显示各种测量值的产品(不会详细介绍)。正如人们所期望的那样,显示部分是一个数据库+建立在其之上的网站(使用 Symfony)。 但是,我们可能还会创建一个 API 来向第三方公开数据
这个问题在这里已经有了答案: Software keyboard resizes background image on Android (16 个答案) 关闭 8 年前。 我有一个类似的问题:So
这个问题似乎很常见,但我真的无法根据现有答案解决问题。 我有一个简单的 maven 项目,没有任何复杂的部署配置等,并且想在点击“mvn site”时生成一个 Maven CheckStyle 报告。
有没有人看过有关何时进行横向扩展与纵向扩展的最佳选择的任何分析或信息。什么时候一个比另一个更有意义。 目前,在标准模式和基本模式下,2 个小型实例的费用与 1 个中型实例的费用相同。 拥有 2 个小型
有没有办法找到 azure 网站何时停止? (我通过门户网站停止了网站,但我不记得是什么时候......) 我正在寻找一些日志,但没有找到任何有用的内容。 谢谢。 最佳答案 您拥有的最接近的是 azu
我目前在 Azure VM 的 IIS 中拥有一个网站。我已将该站点复制到 2 个可用区域中的 2 个虚拟机上。 这可以保护网站免遭停机。 我需要为高负载时刻实现一些可扩展性。这似乎就是创建音阶集的目
我有一个托管在 Azure 上的网站 ( http://mike-ward.azurewebsites.net/ )。我从 Azure 门户设置了一个指向(引用?)我的网站的 Azure CDN。根据
我有一个 Azure 网站(不是 Web 角色),有 2 个槽:生产和暂存。 我只想为生产插槽启用 CDN,而不是为登台启用,问题是我找不到识别主机插槽的方法。 RoleEnvironment 不可用
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提出有关书籍、工具、软件库等建议的问题。您可以编辑问题,以便可以用事实和引用来回答它。 4年前关
我们正在考虑将一些网站从 Azure 云服务迁移到 Azure 网站(事情似乎就是这样进行的)。显然,我们被明确告知云服务不会保留文件系统状态,因为它们会在机器故障时重新部署。 我假设网站是基于 Bl
我有一个 Azure 网站,需要使用在 VM 上运行的 Elasticsearch 服务。 虽然我需要能够锁定对 Elasticsearch 的访问,以便只有 Azure 网站可以访问它,但我似乎无法
我有一个 azure 网站,位于 yis3.azurewebsites.net - 我已将其提升为“共享”网站,以便我可以使用自定义域。我拥有从 123-reg.co.uk 购买的域名 yorkshi
我正在使用 abcPDF 动态创建 PDF。 我想保存这些 PDF,以便客户随时检索。最简单的方法(也是我现在在当前服务器上所做的方法)是将完成的 PDF 保存到文件系统。 看来我一直坚持使用 blo
我们正在尝试了解 Windows Azure 管理 API 为 Azure 网站(而非 Webroles)返回的监控数据的复杂性 例如,下图描述了为 CPUTime 检索的数据点。它似乎表明,在晚上
看起来真的很愚蠢,因为我找不到它: 门户网站似乎不太直观,我如何为一个“网站”付费并在其中运行最多 500 个网站?我想当我通过单击左下角的加号添加“网站”时,我添加了整个虚拟机而不是子站点。如何仅添
我是一名优秀的程序员,十分优秀!