導航:首頁 > 編程語言 > php限制訪問頻率

php限制訪問頻率

發布時間:2022-08-12 19:16:36

⑴ 如何針對某個用戶做訪問頻率的限制

某個IP,不固定的話,就不是某個IP的問題了。你的意思是不是要對某個電腦或某些電腦的訪問次數控制?
如果是這樣,那麼最佳的辦法是利用session值來控制,當然,簡單點也可以利用cookie來控制。至於代碼,你不會以為有通用的吧?
1、伺服器環境不同,如IIS、APACHE等
2、代碼不同,如php,.net,JSP等
3、代碼作用范圍,全局、局部?
總之,說簡單也簡單,代碼量不大,但說復雜也復雜,要對整個WEB的全局文件及涉及到的所有文件修改,通常配置好後,建個文件或函數,在用的文件里引入。

⑵ nginx 只讓php入口文件訪問,其他php文件禁止直接訪問

你用的系統是微擎嗎?

正常來說,除了這兩個php文件,和回調用的介面外,其它php都是不能直接訪問的,文件頭有常量判斷,未定義就退出了。

所以你的系統有上傳漏洞,應該檢查是哪裡出了問題,並去修復一下。可以從以下幾點著手:

  1. 上傳許可權僅提供給已登錄會員,在上傳介面中判斷未登錄狀態的,直接返回錯誤信息

  2. 上傳文件類型限制,如果需要的是圖片,嚴格限制圖片類型,並做圖片規格檢測(gd庫就可以處理),不符合的不保存文件

  3. 文件名處理,不要使用客戶端上傳的文件名保存,而是根據規則 生成一個隨機的名字保存

  4. 上傳頻率限制(根據會員限制),比如,一個小時內限制上傳5張,一天限制100張,可以有效防止黑客利用上傳介面填充垃圾文件到你的伺服器

  5. 如果可行,對上傳文件做一個臨時機制,如上傳的文件先放到臨時文件夾,資料保存的時候,把文件處理一下,移動到正常的附件目錄。這樣就可以定期清理臨時文件夾,防止上傳後沒使用的文件過多佔用伺服器空間。

    不過這個功能改起來會復雜一點,要處理所有使用到上傳功能的介面。

以上幾點處理好,被上傳可執行文件的問題基本上可以杜絕了

而你的解決方案,是只治標不治本的方案

⑶ PHP問題,如何限制php腳本在同一秒(或者同一分鍾)只允許調用一次.

在腳本剛開始加一段代碼就好了,思路是判斷session中有無執行記錄,有的話直接exit,沒有的話在session中設置一個值,時間為一秒或者是一分鍾。

⑷ php是什麼意思

php通常指超文本預處理器,用於面向對象、命令編程,是一種通用開源腳本語言。

主要特點:

為開源性和免費性、快捷性、資料庫連接的廣泛性、面向過程和面向對象並用。優點是利於學習,使用廣泛。此外,php還可以指菲律賓比索的標准貨幣代碼符號,MPLS網路中的倒數第二跳彈出功能。是英文超級文本預處理語言Hypertext Preprocessor的縮寫。PHP 是一種HTML 內嵌式的語言,是一種在伺服器端執行嵌入HTML文檔的腳本語言,語言風格有些類似於C語言,被廣泛的運用。

簡介:

PHP(外文名:PHP: Hypertext Preprocessor,中文名:「超文本預處理器」)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法它可以比CGI或者Perl更快速地執行動態網頁。用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML(標准通用標記語言下的一個應用)文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;PHP還可以執行編譯後代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。

特性包括:

1、PHP 獨特的語法混合了 C、Java、Perl 以及 PHP 自創新的語法

2、PHP可以比CGI或者Perl更快速的執行動態網頁——動態頁面方面,與其他的編程語言相比,PHP是將程序嵌入到HTML文檔中去執行,執行效率比完全生成htmL標記的CGI要高許多;PHP具有非常強大的功能,所有的CGI的功能PHP都能實現

3、 PHP支持幾乎所有流行的資料庫以及操作系統。

4、最重要的是PHP可以用C、C++進行程序的擴展!

語言特點:

開源免費

PHP是一個受眾大並且擁有眾多開發者的開源軟體項目,linux + Nginx + Mysql + PHP是它的經典安裝部署方式,相關的軟體全部都是開源免費的,所以使用PHP可以節約大量的正版授權費用。不過PHP作為一個開源軟體,它缺乏大型科技公司的支持背景,網路上對它的唱衰也是經久不衰,不過它的持續迭代和性能持續增強的現實卻是鼓舞人心的,PHP社區用實際行動給予各種質疑強有力的回擊。

快捷高效

PHP的內核是C語言編寫的基礎好效率高,可以用C語言開發高性能的擴展組件;PHP的核心包含了數量超過1000的內置函數,功能應有盡有很全面,開箱即用程序代碼簡潔; PHP數組支持動態擴容,支持以數字、字元串或者混合鍵名的關聯數組,能大幅提高開發效率; PHP是一門弱類型語言,程序編譯通過率高,相對其他強類型語言開發效率快;PHP天然熱部署,在php-fpm運行模式下代碼文件覆蓋即完成熱部署;PHP經過20多年的發展,在互聯網上可以搜到海量的參考資料供參考學習。

性能提升

PHP版本越高它的整體性能越高,根據官方介紹,PHP7.0.0 對比PHP5.6性能就提升了2倍,PHP7.4已經比PHP7.0快了約30%,PHP8.0在性能上又相對PHP7.4大約改進了10%。PHP 8.0 引入了 JIT編譯器特性,同時加入多種新的語言功能,例如命名參數、聯合類型、註解、Constructor Property Promotion、match 表達式、nullsafe 運算符以及對類型系統、錯誤處理和一致性的改進。PHP擁有自己的核心開發團隊,保持5年發布一個大版本、1個月發布2個小版本的頻率,最新的版本是PHP8.08 。

跨平台

每個平台都有對應的php解釋器版本,指針對不同平台均編譯出目標平台的二進制碼(PHP解釋器),php開發的程序可以不經修改運行在windows、linux、unix等多個操作系統上。

常駐內存

php-cli模式下可以實現程序常駐內存,各種變數和資料庫連接都能長久保存在內存實現資源復用,比較常用的做法是結合swoole 組件編寫cli框架。

頁面生命周期

在php-fpm模式下,所有的變數都是頁面級的,無論是全局變數還是類的靜態成員,都會在頁面執行完畢後被清空,對程序員水平要求低,佔用內存非常少,特別適合中小型系統的開發。

運行機制:

PHP常見的運行模式有2種,分別是php-fpm 和php-cli 。當PHP 選擇運行在php-fpm模式下,所有的變數都是頁面級的,無論是全局變數還是類的靜態成員,都會在頁面執行完畢後被清空。運行在php-cli模式下可以實現程序常駐內存,各種變數和資料庫連接都能長久保存在內存 實現資源復用,性能可以得到很大的提升,php-cli開發比較復雜能但是能夠獲取更高的性能,對開發者的要求比較高需要比較高的開發水平,比較常用的模式是結合swoole 組件編寫cli框架,各種變數能保存在跨進程的高性能共享內存 Table ,可以開發出支持熱啟動的php-cli可靠各類應用系統。

php-fpm在PHP 5.3.3 版本成為了官方正式組件(2010-07-22),它提供了穩定可靠的進程管理服務,進程不足時候可以智能擴充數量,閑置時候可以自動回收銷毀多餘的進程,同時它對程序的容錯能力很強大運行非常穩定,可以應付企業級的開發需求。php-fpm友好的完成了使用HTTP/HTTPS等TCP/IP互聯網協議下進行的用戶的輸入輸出,頁面級生命周期各種資源用完即釋放,不存在內存泄漏的問題。php-fpm也提供有一些常駐內存的技術支持,例如PHP 7.4引入的opcache.preload也能實現局部的PHP類和函數的常駐內存,不過這個方法不夠靈活,和伺服器配置捆綁的太死了。

php-cli因為能實現各類資源的常駐內存,所以可以資源復用,更高效完成多進程編程和非同步編程,可以開發出負載能力更高的應用系統。但是相對php-fpm的簡單編程開發,開發者要注意很多的事項和需要做很多附加的控制器開發,否則就無法實現期待中的高性能。

首先開發者需要去實現可靠的進程管理服務,保證系統進程遇到各類錯誤退出運行後能夠自動創建新的進程,只有這樣才能保證後續的服務請求有足夠空閑進程可分配。每個業務代碼段都要做異常處理,讓進程遇到非致命錯誤時候不會退出,因為進程重啟意味程序和各類資源需要再次載入,這個過程性能消耗不小,所以只有進程穩定運行了常駐內存才有意義。

其次因為常駐內存,編寫的新的程序必須重啟服務才能生效,這一點習慣了fpm模式的開發者會感到比較陌生。另外開發者需要手工釋放內存,否則系統長時間運行後會出現內存泄露。同時在cli模式下,我們不能像fpm里直接用 $_SERVER、$_POST、$_GET、$_COOKI和$_FILES 進行編程工作,需要自己去解析各種互聯網通訊協議完成用戶的輸入輸出。要實現多進程編程利用多核CPU計算,還有學習使用pcntl和posix編程,這里涉及到了非同步編程邏輯,這塊難度還是比較大的。比較常用的模式是結合swoole 組件編寫cli框架。

PHP是一個活躍的社區開發語言,有專業的核心開發團隊在持續不斷的迭代,最近一個版本就是PHP 8.0.8 引入了很多的新特性。

語言參考:

內置函數

PHP 有很多標準的函數和結構。還有一些函數需要和特定的擴展模塊一起編譯,否則在使用它們的時候就會得到一個致命的「未定義函數」錯誤。例如,要使用 image 函數中的 imagecreatetrue,需要在編譯 PHP 的時候加上 GD 的支持。或者要使用 mysqli_connect函數,就需要在編譯 PHP 的時候加上 MySQLi 支持。有很多核心函數已包含在每個版本的 PHP 中如字元串和變數函數。調用 phpinfo或者 get_loaded_extensions可以得知 PHP 載入了那些擴展庫。同時還應該注意,很多擴展庫默認就是有效的。

靜態網站與動態網站的區別

靜態網站:web1.0 時代

動態網站:web2.0 時代

靜態網站特點:

1、網頁內容一經發布到網站伺服器,無論是否有用戶訪問,每個靜態頁面的內容都是保存在網站伺服器上的。也就是說,靜態網頁是實實在在保存在伺服器上的文件,每個網頁都是一個獨立的文件。

2、靜態網頁的內容相對穩定,因此容易被搜索引擎檢索。

3、 靜態網頁沒有資料庫的支持,在網站製作和維護方面工作量較大,因此當網站信息量很大時完全依靠靜態網頁製作方式比較困難。

4、靜態網頁的交互性較差,在功能方面有較大的限制。


⑸ 如何利用爬蟲爬微信公眾號的內容

過程很繁瑣,步驟如下:

1、寫按鍵精靈腳本,在手機上自動點擊公號文章列表頁,也就是「查看歷史消息」;

2、使用fiddler代理劫持手機端的訪問,將網址轉發到本地用php寫的網頁;

3、在php網頁上將接收到的網址備份到資料庫;

4、用python從資料庫取出網址,然後進行正常的爬取。

如果只是想爬取文章內容,似乎並沒有訪問頻率限制,但如果想抓取閱讀數、點贊數,超過一定頻率後,返回就會變為空值,我設定的時間間隔為10秒,可以正常抓取,這種頻率下,一個小時只能抓取360條,已經沒什麼實際意義了。

微信公眾號數據儲存

1、騰訊不對你在本服務中相關數據的刪除或儲存失敗負責。

2、騰訊有權根據實際情況自行決定單個用戶在本服務中數據的最長儲存期限,並在伺服器上為其分配數據最大存儲空間等。你可根據自己的需要自行備份本服務中的相關數據。

3、如果你停止使用本服務或服務被終止或取消,騰訊可以從伺服器上永久地刪除你的數據。服務停止、終止或取消後,騰訊沒有義務向你返還任何數據。

⑹ php如何防止網站內容被採集

1、限制IP地址單位時間的訪問次數
分析:沒有哪個常人一秒鍾內能訪問相同網站5次,除非是程序訪問,而有這種喜好的,就剩下搜索引擎爬蟲和討厭的採集器了。
弊端:一刀切,這同樣會阻止搜索引擎對網站的收錄
適用網站:不太依靠搜索引擎的網站
採集器會怎麼做:減少單位時間的訪問次數,減低採集效率
2、屏蔽ip
分析:通過後台計數器,記錄來訪者ip和訪問頻率,人為分析來訪記錄,屏蔽可疑Ip。
弊端:似乎沒什麼弊端,就是站長忙了點
適用網站:所有網站,且站長能夠知道哪些是google或者網路的機器人
採集器會怎麼做:打游擊戰唄!利用ip代理採集一次換一次,不過會降低採集器的效率和網速(用代理嘛)。
3、利用js加密網頁內容
Note:這個方法我沒接觸過,只是從別處看來
分析:不用分析了,搜索引擎爬蟲和採集器通殺
適用網站:極度討厭搜索引擎和採集器的網站
採集器會這么做:你那麼牛,都豁出去了,他就不來采你了
4、網頁里隱藏網站版權或者一些隨機垃圾文字,這些文字風格寫在css文件中
分析:雖然不能防止採集,但是會讓採集後的內容充滿了你網站的版權說明或者一些垃圾文字,因為一般採集器不會同時採集你的css文件,那些文字沒了風格,就顯示出來了。
適用網站:所有網站
採集器會怎麼做:對於版權文字,好辦,替換掉。對於隨機的垃圾文字,沒辦法,勤快點了。
5、用戶登錄才能訪問網站內容
分析:搜索引擎爬蟲不會對每個這樣類型的網站設計登錄程序。聽說採集器可以針對某個網站設計模擬用戶登錄提交表單行為。
適用網站:極度討厭搜索引擎,且想阻止大部分採集器的網站
採集器會怎麼做:製作擬用戶登錄提交表單行為的模塊

⑺ 如何分析伺服器的反爬蟲機制

1、根據UA機制識別爬蟲。
UA的全稱是UserAgent,它是請求瀏覽器的身份標志,很多網站使用它來是識別爬蟲的標志,如果訪問請求的頭部中沒有帶UA那麼就會被判定為爬蟲,但由於這種要針對這種反爬蟲機制十分容易,即隨機UA,所以這種反爬機制使用的很少。
2、根據訪問頻率識別爬蟲。
爬蟲為了保證效率,往往會在很短的時間內多次訪問目標網站,所以可以根據單個IP訪問的頻率來判斷是否為爬蟲。並且,這種反爬方式比較難以被反反爬機制反制,只有通過更換代理IP來保證效率,IPIDEA提供高匿穩定的IP同時更注重用戶隱私的保護,保障用戶的信息安全。
3、通過Cookie和驗證碼識別爬蟲。
Cookie就是指會員制的賬號密碼登陸驗證,這就可以根據限制單賬號抓取頻率來限制爬蟲抓取,而驗證碼完全是隨機的,爬蟲腳本無法正確識別,同樣可以限制爬蟲程序。

⑻ php爬蟲程序中怎麼樣偽造ip地址防止被封

1、國內ADSL是王道,多申請些線路,分布在多個不同的電信區局,能跨省跨市更好,自己寫好斷線重撥組件,自己寫動態IP追蹤服務,遠程硬體重置(主要針對ADSL貓,防止其宕機),其餘的任務分配,數據回收~
2、1.IP必須需要,,ADSL。如果有條件,其實可以跟機房多申請外網IP。
2.在有外網IP的機器上,部署代理伺服器
3.你的程序,使用輪訓替換代理伺服器來訪問想要採集的網站。
3、ADSL + 腳本,監測是否被封,然後不斷切換 ip
設置查詢頻率限制
正統的做法是調用該網站提供的服務介面。
4、
1 user agent 偽裝和輪換
2 使用代理 ip 和輪換
3 cookies 的處理,有的網站對登陸用戶政策寬鬆些
友情提示:考慮爬蟲給人家網站帶來的負擔,be a responsible crawler
5、
盡可能的模擬用戶行為:
1、UserAgent經常換一換;
2、訪問時間間隔設長一點,訪問時間設置為隨機數;
3、訪問頁面的順序也可以隨機著來
6、
1. 對爬蟲抓取進行壓力控制;
2. 可以考慮使用代理的方式訪問目標站點。
-降低抓取頻率,時間設置長一些,訪問時間採用隨機數
-頻繁切換UserAgent(模擬瀏覽器訪問)
-多頁面數據,隨機訪問然後抓取數據
-更換用戶IP

⑼ php控制每小時內的執行次數

<?php
sessopm_start();
$h = date('H');
if (! isset($_SESSION['count']))$_SESSION['count'] = 0;
if (! isset($_SESSION['h']))$_SESSION['h'] = $h;
if ($_SESSION['h'] !==$h){//每一小時重置一次
$_SESSION['count'] = 0;
$_SESSION['h'] = $h;
}
//小於20次就執行
if ($_SESSION['count'] < 20){
//$run = new api();//假定這一行執行api
$_SESSION['count'] = $_SESSION['count'] + 1;
}
?>

純手工輸入,思路是這樣的!

⑽ php限定post次數,比如一天只能post一次

第一,使用IP限制的話,你只能獲得對方用戶的外網IP,那麼網吧裡面所有電腦的IP是相同的,一天之內這個網吧只有一台電腦可以提交。如果你的客戶主要是家庭用戶,那麼可以使用IP限制,否則IP限制會把許多無辜的人限制了。

獲得IP的方法:
$ip=getenv('REMOTE_ADDR');

IP限制還是可以破的,家庭寬頻用戶斷往重新撥號,會得到新的IP。
再次確認,伺服器無法獲得192.1.1.100這樣的內網IP地址的。

第二,除了IP之外,還可以使用COOKIE限制,在客戶端的瀏覽器保存一個有效期一天的COOKIE,程序檢測COOKIE進行限制。這個方法可以解決IP限制對網吧限制過嚴的問題,但是無法解決聰明的客戶自己清除瀏覽器COOKIE的方法。

設置有效期一天的COOKIE的方法:
setcookie("TestCookie", $value, time()+24*3600);

以上兩個方法都各有千秋,你可以結合起來做一個稍微更合理的,但是都不可能完美。

閱讀全文

與php限制訪問頻率相關的資料

熱點內容
dos命令建文件夾命令 瀏覽:378
解壓的密碼htm被屏蔽 瀏覽:502
冬天太冷冰箱壓縮機不啟動怎麼辦 瀏覽:83
手機打開vcf需要什麼編譯器 瀏覽:910
加密磁碟後開機很慢 瀏覽:271
長沙智能雲控系統源碼 瀏覽:257
阿里雲伺服器如何設置操作系統 瀏覽:999
超級命令的英文 瀏覽:782
做賬為什麼要用加密狗 瀏覽:586
考研群體怎麼解壓 瀏覽:158
linux修改命令提示符 瀏覽:226
圓圈裡面k圖標是什麼app 瀏覽:63
pdf加空白頁 瀏覽:947
linux伺服器如何看網卡狀態 瀏覽:318
解壓新奇特視頻 瀏覽:707
圖書信息管理系統java 瀏覽:554
各種直線命令詳解 瀏覽:864
程序員淚奔 瀏覽:147
素材怎麼上傳到伺服器 瀏覽:517
android百度離線地圖開發 瀏覽:191