我想知道这是否可行......在安大略省,当车辆从一个车主转移到另一个车主时,需要进行排放测试。安大略省政府允许您根据VIN搜索您的汽车历史,在这里: http://www.driveclean.ene.gov.on.ca/ONPublicWeb/pages/vir/vehSearch.jsf?LOCALE=en_CA
我有没有办法在PHP中构建一个检查该数据库并返回测试日期的查询?我是新手。
提前致谢!
答案 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运行它。
希望上述信息足以让您在正确的位置找到它。请记住,政府网站可能不会介意你偶尔这样做,但如果你在他们的服务器上负担很重,可能会变得暴躁。检查他们是否有任何条款和条件限制或禁止您想要做什么。