背景:好朋友的公益性網站臨時有個訪問量需求,讓方式越簡單越好。
方法:(注:以下內容均為研究過程中發現的該需求相關內容整理,均可百度查詢到,沒啥技術含量 )
1、部分瀏覽器自帶工具中的網頁自動刷新功能。優點是簡單直接用,缺點是占用內存較大。如QQ瀏覽器打開特定網頁后-右上角菜單-工具-自動刷新(如下圖),可設置刷新間隔的時間。間隔時間設置多少比較好呢?至少等頁面加載完畢后,或更長時間間隔。可同時開多個頁面同時刷新,最多能開幾個看電腦性能。360安全瀏覽器也有這功能,使用方式相同,但內存優化相比不太行,經簡單實驗對比發現還是QQ瀏覽器占用內存相對較少,對比數據如下:
瀏覽器菜單-工具-自動刷新頁面,一個頁面間隔5秒刷新一次:
QQ瀏覽器,版本號10.7(4341),內核版本Chromium70.0.3538.25/IE11.356.18362.0
百度搜索首頁(未登陸),占用內存170M~190M;
嗶哩嗶哩首頁(未登陸),占用內存230M~280M;若開兩個頁面刷新占用內存280M~320M。
360安全瀏覽器,版本號12.2.1920.0,內核版本78.0.3904.108
百度搜索首頁(未登陸),占用內存220M~240M;
嗶哩嗶哩首頁(未登陸),占用內存320M~340M;若開兩個頁面刷新占用內存390M~410M。
還有:手機QQ瀏覽器也有這功能,設置不熄屏,插上電,也能一直刷。
2、瀏覽器網頁自動刷新插件。優點是相較於程序腳本簡單些,缺點還是占用內存較大且需自己安裝擴展插件。以谷歌瀏覽器為案例,在谷歌擴展商店中(chrome.google.com需FQ)中搜索關鍵字“auto refresh”或“網頁自動刷新”找一個免費且下載次數較多的用就行。這里我測試使用的是一個叫“標簽自動刷新”或“tab-auto-refresh”的擴展程序,https://chrome.google.com/webstore/detail/tab-auto-refresh/oomoeacogjkolheacgdkkkhbjipaomkn 需FQ且可能鏈接會失效,131kb,添加該擴展程序后打開網頁點擊該插件選擇刷新間隔時間就好了,插件挺好用(如下圖)。內存占用情況簡單測試如下:
谷歌瀏覽器,版本號89.0.4389.82(正式版本)(64 位)
百度搜索首頁(未登陸),占用內存80M~90M;
嗶哩嗶哩首頁(未登陸),占用內存190M~220M;若開兩個頁面刷新占用內存270M~300M。
3、腳本程序。用node.js或Python或其他合適的語言都可以,做爬蟲或模擬發包瀏覽器訪問過程。優點:占用內存少且快速可大批量。以Python模擬瀏覽器訪問為例,該方式也最簡單,代碼量少。
用Python該方法經簡單測試3個嗶哩嗶哩首頁(未登陸)間隔70秒自動訪問,占用內存27M~30M。該方式本來是原作者 yzy_1996 用來提升CSDN博客文章閱讀量的,現在對CSDN已經失效了!且原作者也不再更新,大家在使用之前先測試下 對應你的網站 需求是否有效,若檢測機制較嚴格可能也沒效果。Python代碼參考如下:(小白提醒:電腦要安裝有Python才能運行哈,下載地址https://www.python.org/getit/)
# 該程序原本實現刷CSDN網頁訪問量,當訪問被拒絕或者遇到其他異常時會自動重啟,無限刷,現對CSDN已失效。 # 當時經過測試發現大概間隔70秒訪問一下,訪問量才會增加1,現對CSDN已失效。 # 只需要修改或添加url的鏈接就可以了(測試用的原作者CSDN文章鏈接) import requests import time url = ['https://blog.csdn.net/yzy_1996/article/details/81951189', 'https://blog.csdn.net/yzy_1996/article/details/85318705', 'https://blog.csdn.net/yzy_1996/article/details/86992770'] # 瀏覽器User-Agent headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.5959.400 SLBrowser/10.0.3544.400'} count = 0 countUrl = len(url) # 訪問次數設置 for i in range(1,1000): if count < 10000: try: # 正常運行 for i in range(countUrl): response = requests.get(url[i], headers=headers) if response.status_code == 200: count = count + 1 print('Success ' + str(count), 'times') time.sleep(70) # 訪問間隔時間秒 except Exception: # 異常 print('Failed and Retry') time.sleep(60) # 異常重啟時間秒
若沒啥效果,也可嘗試更換代碼中 headers 瀏覽器User-Agent值。在谷歌瀏覽器或Edge瀏覽器地址欄中輸入 about:version,或在火狐瀏覽器地址欄中輸入 about:support,在顯示的頁面中找到用戶代理的值就是,進行替換嘗試,若再不行應該就是檢測機制較嚴格被忽略或限制了,可嘗試改用爬蟲等其他程序方式,詳請百度,就不再贅述。另:IE 瀏覽器目前對大部分about協議項都不支持,提示已取消網頁導航,僅支持blank等幾項,沒查詢到IE的用戶代理值。歐朋瀏覽器我沒看,歡迎知道的小伙伴評論補充下。
這里 headers 中 User-Agent值 的作用是 偽裝 瀏覽器,假裝我們也是瀏覽器訪問的,原需求網站會識別訪問對象是程序還是瀏覽器。
上述 Python 代碼參考原作者 yzy_1996 https://blog.csdn.net/yzy_1996/article/details/81951189 。
node.js程序腳本可參考作者 拿我格子衫來 https://blog.csdn.net/github_35631540/article/details/88259325。(這個我沒測試行不行哈~看代碼還可優化~)
刷數據 可能 帶來的某些問題:
1、資源和帶寬占用升高。承載服務的配置略低,或網絡帶寬偏低,刷的時候可能會資源或帶寬占用跑滿,短期內導致請求加載緩慢或失敗。
2、防火牆攔截。某些服務運營商會配置防火牆防流量攻擊策略,或硬件或系統自帶的防火牆軟件策略,單純跑腳本同一IP地址短時間內多次大流量訪問會容易被攔截,刷一會兒會發現腳本請求無響應或出錯啥的,再次啟動一會后也一樣會停下來。
另外:有些網友想刷新博客文章的瀏覽量,不同的博客系統對瀏覽量+1的條件是不同的,例如博客園、CSDN博客、wordpress自己搭建的博客等等,有的有訪問IP限制(博客園)、訪問時間限制(CSDN)、訪問機器腳本識別等,不是隨便就能刷上數量的。wordpress用插件WP-postview顯示閱讀量時,可后台設置增加閱讀量的限制條件或不限制,且發現可以直接后台修改閱讀量數字,詳請可百度“WP-PostViews插件修改閱讀量”查看,下面是我整理自網絡的。
WP-PostViews插件修改閱讀量:
該方式需單獨修改每篇文章的瀏覽數,若想統一批量設置或隨機增加,可百度谷歌具體方法學習使用哈,這里就簡單說下手動修改的簡單方式。
進入文章編輯頁面,在編輯器下方找到 自定義欄目,在自定義欄目里面找到 views字段,修改后面的數字,即閱讀量,再點擊更新,如圖:
若沒有找到自定義欄目,可點擊頁面右上角的顯示選項,勾選自定義欄目,如圖:
WP-PostViews插件其他設置:可進 后台 -> 設置 -> PostViews,推薦設置一下,有幾個選項會影響到統計數量:
Count Views From:推薦選 Everyone,之后所有進入文章的訪問都可以被統計;
Exclude Bot Views:推薦選 No,該選項可設置是否排除爬蟲的訪問,若想多增加些閱讀數的話還是建議關閉排除功能(即爬蟲訪問次數也算)。
WP-PostViews插件數據修改參考文章 https://www.wpcom.cn/tutorial/145.html
最后,朋友的公益性網站:上海美術館、博物館活動信息(日語) http://www.exhibitionshanghai.com/ 由上海同濟大學日語專業的學生們開發,主要適配了移動端,為促進中日學生歷史文化藝術交流。
小伙伴們如有更好解決方式或發現錯誤,歡迎來評論補充或糾正~~~謝謝 (^ - ^ )