求解题,送奶茶 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
catsky
V2EX    程序员

求解题,送奶茶

  •  
  •   catsky
    catsky 2022-10-10 12:14:01 +08:00 3287 次点击
    这是一个创建于 1147 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近自己业余瞎捣鼓,需要解析几个网页提取公开的数据,请大佬指点。如果答案被采纳,我请你喝 2 杯奶茶 ( 50 人民币)

    需求

    在以下 5 个网站分别输入驾照号码,提取返回的查询信息。可以用 js 或者 ruby(on rails)实现

    目标网站 1:

    https://www.service.transport.qld.gov.au/checkrego/application/VehicleSearch.xhtml 输入驾照号码样例:6666

    目标网站 2:

    https://www.vicroads.vic.gov.au/registration/buy-sell-or-transfer-a-vehicle/check-vehicle-registration/vehicle-registration-enquiry (只需要默认选择的 car/truck, Registration number 即可) 输入驾照号码样例:6666

    目标网站 3:

    https://online.transport.wa.gov.au/webExternal/registration/?0 输入驾照号码样例:6666

    目标网站 4:

    https://rego.act.gov.au/regosoawicket/public/reg/FindRegistrationPage?3 输入驾照号码样例:6666

    目标网站 5:

    https://www.transport.tas.gov.au/MRSWebInterface/public/regoLookup/registrationLookup.jsf 输入驾照号码样例:6666

    16 条回复    2022-10-11 17:05:55 +08:00
    oxromantic
        1
    oxromantic  
       2022-10-10 12:32:13 +08:00
    面向监狱开发 --- 哦,gov.au 啊,告辞
    jeesk
        2
    jeesk  
       2022-10-10 12:34:49 +08:00
    @oxromantic 怕个屁, 人在墙内。
    mlhadoop
        3
    mlhadoop  
       2022-10-10 12:39:39 +08:00
    怎么每个网站的数据都不一样的?
    catsky
        4
    catsky  
    OP
       2022-10-10 12:43:47 +08:00
    @mlhadoop 对,各个州各自为政,都不统一的。有些接口联邦会统一化让大众用如公司基本信息,但像驾照这种,还比较乱
    fulvaz
        5
    fulvaz  
       2022-10-10 12:55:26 +08:00
    两杯奶茶是友情价,找朋友吧~
    ncepuzs
        6
    ncepuzs  
       2022-10-10 13:26:09 +08:00
    赞同楼上,这价格你还是找朋友帮忙吧……
    catsky
        7
    catsky  
    OP
       2022-10-10 13:36:52 +08:00 via iPhone
    如果两个奶茶不够 也请报价 @fulvaz @ncepuzs
    pksyqcj
        8
    pksyqcj  
       2022-10-10 15:40:27 +08:00
    这个主要是针对几个站分析如何请求的,拿到 html 就可以用 puppeteer 轻松解析 html 了
    loopq
        9
    loopq  
       2022-10-10 15:47:36 +08:00
    用 Python 干过这种,拿到 html 用 beautifulSoup 解析就好了,没什么难的吧,自己可以看看,默认 OP 是程序员啊
    PaddyPang
        10
    PaddyPang  
       2022-10-10 16:03:23 +08:00
    用 Python 吧 看看文档半个小时就学会了
        11
    0x666666  
       2022-10-10 16:09:14 +08:00
    用 selenium 可以实现
    tonywangcn
        12
    tonywangcn  
       2022-10-10 16:52:01 +08:00   1
    提供一个分析思路

    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=7019
    3. 拿到 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'
    ```
    catsky
        13
    catsky  
    OP
       2022-10-10 18:42:10 +08:00 via iPhone
    @tonywangcn 多谢大佬指点 请你喝一杯奶茶 麻烦告知接收地址
    tonywangcn
        14
    tonywangcn  
       2022-10-11 13:06:42 +08:00
    @catsky dG9ueXdhbmcuZGF0YUBnbWFpbC5jb20= base64 通过这个联系
    jswxg
        15
    jswxg  
       2022-10-11 14:14:56 +08:00
    楼主问题解决了吗
    catsky
        16
    catsky  
    OP
       2022-10-11 17:05:55 +08:00
    @jswxg 进行中,
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     793 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 21:57 PVG 05:57 LAX 13:57 JFK 16:57
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86