前言
工作原因之前接觸過(guò)爬蟲這塊技術(shù)捞高,因?yàn)榕老x身為Java工程師的我不止學(xué)習(xí)了python渠欺,還入了易語(yǔ)言的坑针史。
在網(wǎng)上看到各類爬蟲示例雖然都是比較大的網(wǎng)站爬蟲經(jīng)歷比如:前程材鹦、拉鉤、網(wǎng)易律罢、百度膀值,騰訊等大廠。Java程序員業(yè)界技術(shù)頂峰應(yīng)該是阿里(至少我是這么認(rèn)為,哈哈因?yàn)橛玫竭^(guò)好多阿里的工具包大愛(ài))居然沒(méi)有看到一篇關(guān)于淘寶的爬蟲(即使有評(píng)論下面也給出了失效的答案)興趣使然開(kāi)始了解阿里的反扒沧踏。通過(guò)網(wǎng)友反饋了自己實(shí)踐確實(shí)阿里的反扒是業(yè)界領(lǐng)銜者歌逢。無(wú)論是mitmproxy + python ,還是Java httpUtils ,亦或無(wú)頭自動(dòng)化測(cè)試 Selenium 淘寶都能做到很好的反扒。也有很多網(wǎng)友說(shuō)修改Selenium屬性可以繞過(guò)js檢測(cè)翘狱,花費(fèi)很多精力成功了突破這個(gè)難點(diǎn)難免會(huì)出現(xiàn)新的檢測(cè)機(jī)制秘案,畢竟Selenium的初衷是為了自動(dòng)化測(cè)試,并不是為了爬蟲而生潦匈。有沒(méi)有一勞永逸的方法呢踏烙?
靈光一現(xiàn)!既然正常的瀏覽器能訪問(wèn)历等,我可不可以通過(guò)讀寫內(nèi)存操控瀏覽器實(shí)現(xiàn)爬蟲功能呢讨惩?我瞬間想到了易語(yǔ)言,開(kāi)始入坑
環(huán)境準(zhǔn)備
易語(yǔ)言開(kāi)發(fā)環(huán)境5.8寒屯,精易模塊荐捻,Mysql數(shù)據(jù)庫(kù),IE11瀏覽器寡夹。工具下載 精易論壇处面,或者吾愛(ài)破解。PS (樓主用的是52的工具包)
精易模塊菩掏,是易語(yǔ)言網(wǎng)頁(yè)填表基礎(chǔ)的封裝魂角。這里并沒(méi)有使用精易web瀏覽器組件而是直接用的IE瀏覽器,因?yàn)榫譿eb瀏覽器也無(wú)法通過(guò)某寶的檢測(cè)智绸。
進(jìn)入開(kāi)發(fā)
萬(wàn)事開(kāi)頭難野揪,操作IE瀏覽器最重要的是獲得IE瀏覽器的webView句柄,這樣才能對(duì)他進(jìn)行讀寫
這里使用了windowapi FindWindowExA
代碼截圖
windowAPI
···
.版本 2
.子程序 窗口取句柄, 整數(shù)型, , 本子程序采用【精易編程助手】生成,成功返回窗口句柄,失敗返回0
.參數(shù) 參數(shù)父窗口句柄, 整數(shù)型, 可空, 如果是取頂級(jí)的窗口句柄請(qǐng)留空
.參數(shù) 參數(shù)子窗口句柄, 整數(shù)型, 可空, 如果是取頂級(jí)的窗口句柄請(qǐng)留空
.參數(shù) 參數(shù)窗口類名, 文本型, 可空, 窗口的類名
.參數(shù) 參數(shù)_窗口標(biāo)題, 文本型, 可空, 窗口聽(tīng)標(biāo)題
返回 (FindWindowExA (參數(shù)父窗口句柄, 參數(shù)子窗口句柄, 參數(shù)窗口類名, 參數(shù)窗口標(biāo)題))
.子程序 功能取句柄, 整數(shù)型, , 本子程序采用【精易編程助手】生成,成功返回窗口句柄,失敗返回0
.局部變量 局句柄, 整數(shù)型
局句柄 = 窗口取句柄 (, , “IEFrame”, )
.如果真 (局句柄 = 0)
返回 (0)
.如果真結(jié)束
局句柄 = 窗口取句柄 (局句柄, , “Frame Tab”, )
.如果真 (局句柄 = 0)
返回 (0)
.如果真結(jié)束
局句柄 = 窗口取句柄 (局句柄, , “TabWindowClass”, )
.如果真 (局句柄 = 0)
返回 (0)
.如果真結(jié)束
局句柄 = 窗口取句柄 (局句柄, , “Shell DocObject View”, )
.如果真 (局句柄 = 0)
返回 (0)
.如果真結(jié)束
局句柄 = 窗口取句柄 (局句柄, , “Internet Explorer_Server”, )
.如果真 (局句柄 = 0)
返回 (0)
.如果真結(jié)束
返回 (局句柄)
···
問(wèn)題一
運(yùn)行ie就是精易 填表的一些簡(jiǎn)單操作了瞧栗,存在問(wèn)題目前版本的精易模塊似乎無(wú)法觸發(fā)頁(yè)面的事件斯稳,例如鼠標(biāo)進(jìn)入。展開(kāi)首頁(yè)分類
解決方案
模擬鼠標(biāo)移動(dòng)事件迹恐,觸發(fā)瀏覽器JS挣惰。