用PHP自动搜索政府数据库

时间:2014-07-11 13:44:04

标签: php search

我想知道这是否可行......在安大略省,当车辆从一个车主转移到另一个车主时,需要进行排放测试。安大略省政府允许您根据VIN搜索您的汽车历史,在这里: http://www.driveclean.ene.gov.on.ca/ONPublicWeb/pages/vir/vehSearch.jsf?LOCALE=en_CA

我有没有办法在PHP中构建一个检查该数据库并返回测试日期的查询?我是新手。

提前致谢!

2 个答案:

答案 0 :(得分:0)

是的,请看使用PHP cURL:http://php.net/manual/en/book.curl.php 您的网络服务器或主机的PHP配置需要在启用cURL的情况下进行设置,您可以选中phpinfo()进行验证。

cURL将允许您对表单的提交页面http://www.driveclean.ene.gov.on.ca//ONPublicWeb/pages/vir/vehSearch.jsf执行POST / GET甚至SSL请求。 POST参数为virSearchForm:VINId = vinnumber,virSearchForm:searchButtonId =搜索,virSearchForm_SUBMIT = 1

然后,您需要解析您要查找的信息的响应。

此方法的最大问题是当他们更新网站时,您还需要更新脚本。

如果没有测试,如果他们使用CSRF形式就无法实现,因为大多数技术都需要会话状态在每个页面视图上生成一个随机数,以便从带有处理页面的表单提交页面进行身份验证。 但是,他们确实有一个隐藏的表单字段javax.faces.ViewState,它似乎是一个CSRF令牌。

您还可以与他们的客户支持人员联系,了解他们是否有正式的网络API,以便您通过http发送请求,类似于Google的API示例。

答案 1 :(得分:0)

如果网站提供API,您可以添加网址查询字符串项(例如& vin = 123456789),然后抓取结果显示页面以获取所需信息。

如果网站没有提供API,但是您填写表单,我相信有各种工具可以为页面生成输入,然后从返回的页面中抓取信息。 wget可能会这样做(我不太熟悉它可以告诉你),Selenium可以这样做(我相信它有一个PHP语言界面)。我认为你想要一个完全“放手”的自动化方法。您是如何做的将取决于这是一次性或偶尔的工作,还是生产系统,以及您是需要从网站还是从PC运行它。

希望上述信息足以让您在正确的位置找到它。请记住,政府网站可能不会介意你偶尔这样做,但如果你在他们的服务器上负担很重,可能会变得暴躁。检查他们是否有任何条款和条件限制或禁止您想要做什么。