php – 在外部网站上完成预订(cURL,iFrame ……?)后检索信息

前端之家收集整理的这篇文章主要介绍了php – 在外部网站上完成预订(cURL,iFrame ……?)后检索信息前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在研究一个具有挑战性的问题:在预订过程之后找到获取数据的解决方案.基本上,我有一个带有表格的页面(SLIM FORM),我需要自动填写来自提供者表格的信息(例如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代码的书签的系统)

谢谢你的答案和对不起的长度:-)

更新:根据我收到的答案,这里有新的想法:对于大型供应商(easyjet,hotels.com等…),如果可用,我将使用API​​.对于小型提供商(例如http://www.hotel-gare-clermont.com/en,6217.html),我认为代理解决方案值得另外一个,我不会从“Hotel de la Gare”收到有关法律问题的任何投诉,同时增加对这些小型提供商的可见性.你怎么看?

1)这是可能的,但它具有边界非法的副作用.您不能只是scape提供者表单并在iframe中保留他们的页面.如果提供商抓住你这样做,你很可能会被起诉.

您需要的是与各个提供商的合作协议.根据该协议,他们可能会打开一个API(应用程序编程接口)供您使用.这样您就可以更直接地查询他们的网站,并以清洁和批准的方式进行预订.

2)cURL是一个很棒的库,可以很好地获取网页.互联网上有许多用于将页面提取到字符串的示例.在解析该字符串方面,在理想的世界中,您可以使用XML解析器.不幸的是,HTML页面的构造非常糟糕,这使得它们难以解析.大多数编码人员在必须解析HTML块时都倾向于使用正则表达式.

获取会话ID,您的第一个cURL请求应该是example.com上的登录表单.通过尝试获取http://example.com?username=bob&pass=secret伪造登录表单的提交.您可以通过在服务器响应中查找“成功登录”或类似文本来检查有效登录.您可以从响应标头中获取会话ID(如果它是cookie).后续cURL请求应发送您的cookie.

3)cURL在服务器端运行,因此绝对不知道您打开的选项卡.您可以使用Javascript查询标签,但我敢打赌,出于安全考虑,大多数浏览器都不允许您这样做.

猜你在找的PHP相关文章