跟大家分享一下anyproxy進階使用方法,並且透過這個分享如何提高公眾號文章採集效率的分析,需要的朋友參考學習下吧。
影響因素主要會有以下幾點:
1、網路環境不佳;
#2、手機或模擬器中微信客戶端崩潰;
3、其它一些網路傳輸錯誤;
因為我比較重視採集系統的運作成本,這個成本包括硬體投入,運算力投入和佔用的人工精力。所以必須提高運轉的穩定性。因此如果採集中斷,必然增加人工精力的成本。所以針對這一點我對anyproxy做了一些進階的改造,並且藉助了其它一些工具提高了運作效率。以下就是具體的解決方法:
一、程式碼升級
1)微信瀏覽器白屏
解決方法:修改檔案requestHandler.js,還是在rule_default.js同級目錄下,(mac系統/usr/local/lib/node_modules/anyproxy/lib/;win系統評論區網友cnbattle提供C:\Users\Administrator\AppData\ Roaming\npm\node_modules\anyproxy\lib)
在程式碼中找到proxyReq.on("error",function(e){這個函數,並修改內容
//userRes.end();//把这一行注释掉 userRes.end('<script>setTimeout(function(){window.location.reload();},2000);</script>');//插入这一行
這樣當發生錯誤時,會傳回一個刷新目前頁面的js;這樣程式就能繼續下去了
2)取代所有圖片,減輕瀏覽器負擔
#首先需要製作一張非常小的圖片,我做的是1x1像素,png透明圖;放到任意資料夾裡。然後修改檔案rule_default.js的程式碼:
在檔案開頭有許多var的位置加入以下程式碼
var fs = require("fs"), img = fs.readFileSync("/Library/WebServer/Documents/space.png");//代码绝对路径替换成自己的
在下面的程式碼中找到shouldUseLocalResponse : function(req,reqBody){函數,在函數內插入程式碼:
if(/mmbiz\.qpic\.cn/i.test(req.url)){ req.replaceLocalFile = true; return true; }else{ return false; }##繼續在下面的程式碼中找到dealLocalResponse : function(req, reqBody,callback){函數,在函數內插入程式碼:
if(req.replaceLocalFile){ callback(200, {"content-type":"image/png"},img ); }這三段程式碼就會將公眾號裡面的所有圖片替換成本地圖片,減輕網路傳輸壓力和瀏覽器佔用的內存,有效的提高運行效率;3)禁止手機或模擬器訪問一些無用的和會導致錯誤的網址同樣在rule_default. js裡找到程式碼replaceRequestOption : function(req,option){函數,在函數內部插入程式碼:
var newOption = option; if(/google|btrace/i.test(newOption.headers.host)){//这里面的正则可以替换成自己不希望访问的网址特征字符串,这里面的btrace是一个腾讯视频的域名,经过实践发现特别容易导致浏览器崩溃,所以加在里面了,继续添加可以使用|分割。 newOption.hostname = "127.0.0.1";//这个ip也可以替换成其他的 newOption.port = "80"; } return newOption;這個修改之前的文章也提到過了,在這裡重新再詳細介紹一下。他的用途很多,不同的手機和模擬器都有可能存取一些無用的地址導致設備變慢,透過這個代碼就可以阻止訪問。
二、使用pm2管理anyproxy進程
#pm2 是一個帶有負載平衡功能的Node應用的進程管理器.
##提供HTTP API
遠端控制和即時的介面API ( Nodejs 模組,允許和PM2進程管理器互動)
測試過Nodejs v0.11 v0.10 v0.8版本,相容CoffeeScript,基於Linux 和MacOS.
首先安裝pm2
sudo npm install -g pm2
在pm2環境下執行anyproxy
sudo pm2 start anyproxy -x -- -i
現在anyproxy在pm2的環境中運行了
#之後還有幾個pm2的命令可以幫助管理和監控anyproxy
//查看运行日志 sudo pm2 logs anyproxy [--lines 10] //关闭anyproxy sudo pm2 delete anyproxy //重启anyproxy sudo pm2 restart anyproxy //监控内存占用 sudo pm2 monit //监控运行状态 sudo pm2 list
特別提示:pm2運行後,終端機視窗是可以關閉的。
使用pm2管理anyproxy進程,最重要的目的是:anyproxy因為錯誤而退出程式之後,pm2可以另anyproxy自動重啟。
三、取消sudo密碼,並使pm2開機自啟動以下內容是在mac環境下的方法,windows也應該有類似的方法,如果了解的網友可以私訊寄給我。
1)首先取消sudo的密碼
執行指令:
#sudo visudo
找到程式碼:
%admin ALL = (ALL) ALL
修改為:
%admin ALL = (ALL) NOPASSWD: ALL
這樣sudo的密碼就取消掉了,然後就可以將pm2加入到開機自啟動了
2)設定開機自啟動
在終端機中輸入指令:
cd touch autoexec.sh vim autoexec.sh
然後進入編輯模式,按鍵盤字母i開始編輯,貼上程式碼:
#!/bin/sh sudo pm2 start anyproxy -x -- -i sudo pm2 monit
编辑完之后,按esc,再键入命令wq保存退出编辑模式。
再执行命令:
chmod 755 autoexec.sh
这样一个可执行文件就建立好了
然后打开mac系统的“系统偏好设置”,找到“用户与群组”,在左侧选择当前用户,右侧选择登录项;然后点击+号,找到当前用户的根目录(可以按shift+command+h快捷键),选择autoexec.sh文件,添加到登录项中,就可以开机自启动了。
经过以上的几项设置之后,anyproxy系统就会比原来更加稳定,其实主要原因是模拟器或手机的不稳定导致的anyproxy发生的错误。经过实际测试,anyproxy目前可以长时间运行不崩溃。而微信客户端还是在运行大约6个小时之后崩溃,以2秒翻一页的速度,采集总数大约1万个页面。如果不采集阅读量,就可以是1万个公众号的历史消息页。
微信客户端的崩溃现象是退出微信浏览器,停留在查看公众号资料页面。所以如果希望再进一步提高自动化,也可以使用触动精灵之作自动化脚本,定时推出微信浏览器,再点击历史消息页。这样应该就可以实现长时间自动化采集了。
相关推荐:
以上是用好anyproxy提高公眾號文章蒐集效率詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

在PHP中,可以使用session_status()或session_id()來檢查會話是否已啟動。 1)使用session_status()函數,如果返回PHP_SESSION_ACTIVE,則會話已啟動。 2)使用session_id()函數,如果返回非空字符串,則會話已啟動。這兩種方法都能有效地檢查會話狀態,選擇使用哪種方法取決於PHP版本和個人偏好。

sessionsarevitalinwebapplications,尤其是在commercePlatform之前。

在PHP中管理並發會話訪問可以通過以下方法:1.使用數據庫存儲會話數據,2.採用Redis或Memcached,3.實施會話鎖定策略。這些方法有助於確保數據一致性和提高並發性能。

PHPsessionshaveseverallimitations:1)Storageconstraintscanleadtoperformanceissues;2)Securityvulnerabilitieslikesessionfixationattacksexist;3)Scalabilityischallengingduetoserver-specificstorage;4)Sessionexpirationmanagementcanbeproblematic;5)Datapersis

負載均衡會影響會話管理,但可以通過會話複製、會話粘性和集中式會話存儲解決。 1.會話複製在服務器間複製會話數據。 2.會話粘性將用戶請求定向到同一服務器。 3.集中式會話存儲使用獨立服務器如Redis存儲會話數據,確保數據共享。

Sessionlockingisatechniqueusedtoensureauser'ssessionremainsexclusivetooneuseratatime.Itiscrucialforpreventingdatacorruptionandsecuritybreachesinmulti-userapplications.Sessionlockingisimplementedusingserver-sidelockingmechanisms,suchasReentrantLockinJ

PHP會話的替代方案包括Cookies、Token-basedAuthentication、Database-basedSessions和Redis/Memcached。 1.Cookies通過在客戶端存儲數據來管理會話,簡單但安全性低。 2.Token-basedAuthentication使用令牌驗證用戶,安全性高但需額外邏輯。 3.Database-basedSessions將數據存儲在數據庫中,擴展性好但可能影響性能。 4.Redis/Memcached使用分佈式緩存提高性能和擴展性,但需額外配

Sessionhijacking是指攻擊者通過獲取用戶的sessionID來冒充用戶。防範方法包括:1)使用HTTPS加密通信;2)驗證sessionID的來源;3)使用安全的sessionID生成算法;4)定期更新sessionID。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

禪工作室 13.0.1
強大的PHP整合開發環境

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境