提供一个分析思路
1. 输入驾照号码后,点击 search ,network 显示的第一条请求便是,如下图所示。
[](
https://imgur.com/rVsPhCW)
2. 点击 headers ,发现第一条请求通过 post 提交参数,得到一个 302 重定向,看 Response Headers 的 location 部分,即为第二条请求。
[](
https://imgur.com/4aoZRYk)
3. 点击第二条 request 的 response ,搜索 左侧页面中出现的 Registration number ,即 515DF3 ,即可判断出重定向中的请求结果为目标页面
[](
https://imgur.com/21KFxWc)
4. 构造请求,确认上述猜测是否正确,如下图所示右键第一条请求 选择 Copy as cURL
[](
https://imgur.com/Ko0KZFa)
5. 在 Postman 中通过 import -> Raw text -> continue 导入,点击 Send (或直接将 cURL 命令粘贴到命令行工具回车),在返回的 Body 中搜索 Registration number(515DF3) 即可发现如下图中的结果。
[](
https://imgur.com/T5yympW)
整个操作过程无需开启 Javascript 即可实现,换言之,无需任何 headless browser 即可实现 OP 的需求。
下面为具体的实现步骤:
1. 请求 `
https://www.service.transport.qld.gov.au/checkrego/application/VehicleSearch.xhtml`
2. Redirect 到
https://www.service.transport.qld.gov.au/checkrego/application/VehicleSearch.xhtml?dswid=70193. 拿到 2 中的 cookie ,dswid ,以及 response 中的 `javax.faces.ViewState`
4. 将上述拿到的 cookie ,dswid ,以及 javax.faces.ViewState 将下面的值进行相应替换,请求,即可获取到目标数据
5. 剩下的就是通过 css selector 等技术解析 html 数据了
```
curl --location --request POST '
https://www.service.transport.qld.gov.au/checkrego/application/VehicleSearch.xhtml?dswid=-4097' \
--header 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9' \
--header 'Accept-Language: en-CA,en;q=0.9,fr-CA;q=0.8,fr;q=0.7,zh-TW;q=0.6,zh-CN;q=0.5,zh;q=0.4,en-US;q=0.3,ja-JP;q=0.2,ja;q=0.1,en-GB;q=0.1' \
--header 'Cache-Control: no-cache' \
--header 'Connection: keep-alive' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Cookie: oam.Flash.REDIRECT=true; JSESSIONID=0001YXWHRoRmC2n_Ur_iDbDJ5GJ:1c05gfnja; LPVID=Q4NmYxMmJhYTc2NmJiZWVj; LPSID-36317183=3ZTOIJh_TpueQjQE9EnFdQ; ADRUM_BTa=R:94|g:37c82fe9-373a-4a38-b0a8-29a58de27da5|n:tmr-prod_2381add0-3320-4317-90dd-93ddbdaa5c0d; SameSite=None; ADRUM_BT1=R:94|i:124181|e:5; ADRUM_BT1=R:94|i:124181|e:4; ADRUM_BTa=R:94|g:43df3ec2-861c-4365-9418-d933ea606284|n:tmr-prod_2381add0-3320-4317-90dd-93ddbdaa5c0d; JSESSIONID=0001EMXzKZ1B4mwI7r7wzhcGF3L:1c05gfnja; SameSite=None' \
--header 'DNT: 1' \
--header 'Origin:
https://www.service.transport.qld.gov.au' \
--header 'Pragma: no-cache' \
--header 'Referer:
https://www.service.transport.qld.gov.au/checkrego/application/VehicleSearch.xhtml?dswid=-4097' \
--header 'Sec-Fetch-Dest: document' \
--header 'Sec-Fetch-Mode: navigate' \
--header 'Sec-Fetch-Site: same-origin' \
--header 'Sec-Fetch-User: ?1' \
--header 'Upgrade-Insecure-Requests: 1' \
--header 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36' \
--data-urlencode 'vehicleSearchForm:plateNumber=6666' \
--data-urlencode 'vehicleSearchForm:referenceId=' \
--data-urlencode 'vehicleSearchForm:confirmButton=' \
--data-urlencode 'vehicleSearchForm_SUBMIT=1' \
--data-urlencode 'javax.faces.ViewState=97L3Xac9P5KSdnHwMlK7fmBuOMA9xhe7oQT/dF6FrTQ5Xa+yhup62pPrTc8ozfKyJ9mCORg8uqJlyWeXaifmBg==' \
--data-urlencode 'javax.faces.ClientWindow=-4097'
```