用C 實現修改網頁資料

2021-09-08 03:49:59 字數 1804 閱讀 9803

背景

由於某寶最近公升級,導致

朋友買的刷單軟體不能用了;在又付過錢之後,那個刷單軟體**商竟然捐款跑路了...於是,朋友委託我做乙個功能一樣的軟體。

功能

他給我描述的軟體功能,是這個樣子的:在網頁登陸我的某寶之後,在【已買到的寶貝】頁面,有待付款、待發貨、待收貨、待評價數量,軟體可以隨意修改這些資料;頁面下邊還有交易單,軟體還可以隱藏指定的單據...然後他把之前買的軟體發給我,讓我研究研究...

分析

按照他的描述,我概括之後,軟體的功能就是修改網頁資料。我先用reflector開啟朋友給我的程式,看看能不能反編譯,要是能反編譯就好辦了,0.0,結果反編譯不了,看來自己得從頭開始找資料...

實現一htmldocument的資料,只能多輸出點日誌資訊分析了。經過分析發現,htmldocument是乙個樹,並且每個節點都實現ihtmlelement,每個節點的子節點集合都實現ihtmlelementcollection,so,知道怎麼遍歷了...我是在嘗試了無數次typeof之後才知道的...一定要把節點轉換為

ihtmlelement之後再用typeof,否則你只會得到system._comobject型別...

找到節點之後,修改數量值很好實現,把目標節點的innerhtml改為指定文字就行;隱藏單據就是隱藏乙個節點,把節點的style.display置為none就行了。

就這樣,這個bho版本的實現了,但是在測試過程中,發現有點不完美:因為我是在dom完成之後才修改的資料,但是瀏覽器是收到多少資料,就解析多少顯示多少,那麼就在瀏覽器【顯示原始數量資料】之後 到 【整個頁面】完成,這段期間,頁面顯示的將是真實資料,而不是我修改的資料。這個空白期理論上不可消除,除非你的網速達到光速,配置達到天河二號...

我把情況給朋友說了之後,朋友說在他電腦上跑跑,看看效果。週日晚上,在朋友的電腦上,程式跑起來之後,他進入到

已買到的寶貝頁面,重新整理再重新整理,資料還是真實的資料,不是修改過的資料,omg,我登時傻眼了...

朋友:這玩意支援搜狗瀏覽器嗎?刷單不能用ie...

我:不知道,我下個搜狗試試...

我趕緊下個搜狗,跑起來,進入已買到的寶貝頁面,重新整理再重新整理,kao,不行...

我馬上對朋友說,這個版本的不行,我下週整個新版本的...

實現二

上次慘敗之後,我又重新分析這個程式到底該怎麼做才能讓它支援各種瀏覽器,並且是在資料達到瀏覽器之前進行修改。

首先想到的是對本地網絡卡進行抓包,監視所有的包,把符合規則的資料修改之後再放行:抓包好抓,但是分析資料就有難度了,http的還好,https的怎麼辦...

我又去分析朋友給我的軟體,我發現裡面還有3個dll,我嘗試用

beforeresponse

事件響應函式

中:string strresponse = osession.getresponsebodyasstring();

這句是獲取瀏覽器接收資料的字串,在處理html格式資料時,用這個方法。

osession.utilsetresponsebody(strresponse);

這句是設定瀏覽器的接收資料,即把修改之後的資料給瀏覽器。

對於strresponse你可以用任意規則處理,0.0...

4.怎麼使修改的資料有效?

在beforerequest事件響應函式中:

osession.bbufferresponse = true;

因為這個程式只是修改了瀏覽器接收到的資料,並沒有影響伺服器資料,所以我給它起名madoff。

over

清洗網頁資料

ascii american standard code for information interchange美國標準資訊交換碼 只能表示128個字元 這個大家都是很熟悉的,從32是空格,然後是一堆符號,然後是48 57表示0 9,65 90是a z,97 122是a z。就是很少,也只有英文本母...

用Redis快取Web網頁的分頁資料

zset資料結構補充 redis中存放資料都是將資料序列化放入記憶體中,所以將物件序列化有兩種方式 流序列和json zadd key,score,members 向key的鍵下面新增元素,排序方式預設是以score的字典公升序,score是double型別的值,不能傳錯了。這裡的key可以認為是指...

python 抓取網頁資料

利用python進行簡單的資料分析 1 首先要進行分析網頁的html,我們所要抓取的資料是根據銷量排名的手機資訊,所以主要需要抓取手機的型號 銷量,按照 由小見大 的方法來獲取所需要的html資訊,如下圖所示 由上可以看出手機型號所在的html標籤是 h3 手機 是在div中的class屬性為 pr...