- 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/
所以我知道,如果我将 iFrame 包含到不在同一域中的页面,我将无法通过浏览器策略访问该 iframe 的 DOM,但是 iframe 中的页面可以执行任何类型的父文档访问吗? 具体来说,我必须考虑
我有 3 个嵌套的 iframe,我想访问第三个 iframe 中的元素(链接)。 var iframe = document.getElementById('aswift_2'); var inne
Chrome 有最简单的方法,只需从下拉列表中选择一个框架即可。 Firefox 提供了 cd(frame)功能不太好用,但只要您愿意发现哪个框架是哪个框架就可以完成工作。 但是我们如何在 Inter
我们公司正在考虑允许第三方网站使用我们的在线结账系统。 一位客户表示,他们希望能够使用灯箱样式的弹出窗口来显示结帐。他们希望在网站的每个页面上都可以使用它,因此大多是不安全的页面。我们的结帐系统和客户
当 iframe 中加载的页面来自另一个域时,我们如何从 iframe 中加载的文档访问父文档? 我收到权限被拒绝错误。 最佳答案 如果您可以控制这两个文档,那么您可以轻松地使用 easyXDM (
使用 SOAP 调用我得到一个 URL 并在 iframe 中显示。那个 URL 内容是一个表单,用户需要填写所有数据并提交它。当我调用 SOAP 函数时,也给出了一个返回链接,其中一个重定向到我的站
我正在尝试开发一个小型 Web 应用程序,其中包含一个使用来自另一个域的 iframe 的 Web 应用程序。我正在尝试在本地计算机上对此进行测试,为此我需要模仿 iframe 来自另一个域(虽然它实
我有一个网页 指向另一个网站。我不希望这阻止页面其余部分的加载。有没有办法异步加载它? 最佳答案 使用 jQuery,可以实现以下效果: $(window).load(function() {
我搜索过高低,无法找到解决方案。在我看来,iframe API仅适用于较旧样式的网址,而不适用于较新的海关网址。 我的意思是,如果某人的YouTube网址为www.youtube.com/user/T
我想在我的网站上显示youtube视频。 iframe是可能的,我只需要像这样将其放在我的网页上。 一切都很好,除了我超过99%的客户来自伊朗,而且YouTube在伊朗被政府封锁。因此,直接从you
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
所以我有一个简单的页面,当用户单击链接时,iframe 将打开。我正在尝试使用 http://www.google.com/support/analytics/bin/answer.py?hl=en&
假设情况:我有一个名为“miniatureBoltsInCarburetors.com”的不起眼的小网站,该网站提供有关将化油器固定在一起的微型 bolt 的内容以及一些一般相关的汽车信息。我的网站还
IE 6.0 向我显示消息“此页面包含安全和非安全项目”,因为我的页面上有 iframe(针对组合框错误)。我尝试指向 src 中的一些不同的内容,但如果不放入空白的 html 页面,我似乎无法摆脱此
我有一个带有一个 iframe 和一个按钮的网页。 在页面加载事件中, if (!Page.IsPostBack) { string sDocUrl = //some doucmen url Ifra
我有一个带有一些 IFrame 的页面。这些 IFrame 位于同一域中。我想在打开模态窗口时从页面中删除 iframe 内容,以减少模态窗口中的延迟。 然后,当我关闭模态窗口时,我希望将 IFram
我正在尝试访问一个框架内的控件,该框架位于另一个框架内的框架内。 最后(最深的)框架仅用于登录 - 我设法做到了。 问题是登录后我基本上需要回到上框点击一个按钮。出于某种原因,我不断收到错误消息: N
我有下一个元素结构: .. actual markup with scripts here 使用纯 javascript,我已经摆脱
我们使用 Worldpay 作为我们的支付提供商,我们将 PayPal 作为 worldpay 的一部分实现,这意味着我们只与 Worldpay 集成,他们处理 PayPal 集成。 虽然这会带来很多
我有一个客户,由于特定原因,需要在 HTTP 页面上放置一个指向 HTTPS 页面的 IFRAME。 HTTP 页面托管在与 HTTPS 页面不同的域和服务器上,但都属于同一客户端。 撇开为什么不应该
我是一名优秀的程序员,十分优秀!