Re: [問題] 萊爾富門市爬蟲 踢到鐵板

作者: TakiDog (多奇狗)   2020-05-10 00:07:28
※ 引述《somehog (低進)》之銘言:
: 各位大大好,遇到一個鐵板,
: 可能跟程式語言比較沒關係,
: 專案需要定期抓萊爾富的全部所有門市,
: 找到其官網門市查詢所在位置,
: https://www.hilife.com.tw/storeInquiry_street.aspx
: 大約看一下網頁原碼,
: 應該是ASP.Net & WebForm無誤,
: GET跟POST都是這一支,
: 所以邏輯思路如下:
: 方法1:
: 先用GET不帶參數發出Request,
: 取得回傳網頁後,剖析取出
: __VIEWSTATEGENERATOR
: __EVENTVALIDATION
: __VIEWSTATE
: __EVENTTARGET
: __EVENTARGUMENT
: __LASTFOCUS
: 等等數值,
: 然後塞入POST內,
: 再填入自訂的縣市CITY與鄉區AREA後,
: 發出Request,
: 台北市全區沒問題,
: 都可以取得門市資料,
: 但詭異的是:
: 其他縣市與鄉區卻直接拒絕連結.....!!??
: 試用方法2
: 先用GET取得__VIEWSTATE值之後,
: 再發出台北市中山區的POST,
: 得到正常回傳結果後再取一次全部__VIEWSTATE值,
: 然後再塞入,填上新北市林口區再發出POST,
: .....一樣失敗,拒絕連結!
: 試用方法3
: 把GET取得__VIEWSTATE值,
: 手工寫入靜態HTML網頁內的FORM input內,
: 指定雲林縣虎尾鎮
: 然後按submit post出去,
: .........成功正常回傳
: 感覺有點崩潰,沒頭緒....
: 猜想因為台北市是default頁,
: 所以沒有設檢查,
: 不瞭解ASP.Net的後端作法,
: 有大大可以提供解法建議嗎?
: 感恩~
我很討厭這種架構
你在網頁上的每個動作都要丟一個req,如果你要做2個動作
就要丟2個
如果做很多....
我們如果要跳到基隆市的話
我們不知道基隆有什麼區,第一個封包只能做更動縣市的動作
我們的地區要使用台北的地區
第二個封包才能到基隆後才能選擇基隆的地區
附上gist 寫比較趕XD
https://gist.github.com/takidog/447e2231691617cbb14b3a515f63ff1e
小弟只是喜歡爬蟲,很菜 code很臭 不要電我XDD
作者: aidansky0989 (alta)   2020-05-10 09:01:00
推晚點研究一下
作者: boboye (me)   2020-05-11 18:32:00
推一個
作者: nini200 (200妮妮)   2020-05-14 00:15:00

Links booklink

Contact Us: admin [ a t ] ucptt.com