導航:首頁 > 源碼編譯 > 黑名單介面源碼

黑名單介面源碼

發布時間:2023-04-21 23:01:22

『壹』 Android之隱藏api介紹

..

Android P 引入了針對非 SDK 介面(俗稱為隱藏API)的使用限制。這是繼 Android N上針對 NDK 中私有庫的鏈接限制之後的又一次重大調整。

從今以後,不論是native層的NDK還是 java層的SDK,我們只能使用Google提供的、公開的標准介面。這對開發者以及用戶乃至整個Android生態,當然是一件好事。

但這也同時意味著Android上的各種黑科技有可能會逐漸走向消亡。

公共 SDK 介面是在 Android 框架軟體包索引 中記錄的那些介面

從 Android Pie 開始,對某些隱藏類、方法和欄位的訪問受到限制在 Pie 之前,通過簡單地使用反射來使用這些隱藏的非 SDK 組件非常容易。

但是,現在當嘗試訪問時,面向 API 28 (Pie) 或更高版本的應用程序將遇到 ClassNotFoundException、NoSuchMethodError 或 NoSuchFieldException Activity#createDialog() 。

先來看看系統是如何實現這個限制的。

通過反射或者JNI訪問非公開介面時會觸發警告/異常等,那麼不妨跟蹤一下反射的流程,看看系統到底在哪一步做的限制。

先來看一下 java.lang.Class.getDeclaredMethod(String) :

其中看一下 ShouldBlockAccessToMember 的調用,如果它返回false,那麼直接返回 nullptr ,上層就會拋 NoSuchMethodXXX 異常;也就觸發系統的限制了。

源碼如下:

繼續跟蹤下 GetMemberAction方法 :

繼續跟蹤GetMemberActionImpl方法:

其中調用到了

只要 IsExempted 方法返回 true,就算這個方法在黑名單中,依然會被放行然後允許被調用。

IsExempted 方法:

繼續跟蹤傳遞進來的參數 runtime->GetHiddenApiExemptions() 發現也是 runtime 裡面的一個參數.

這樣就可以直接修改 hidden_api_exemptions_ 繞過去限制。

Java 層的,有一個對應的 VMRuntime.setHiddenApiExemptions 方法,通過 VMRuntime.setHiddenApiExemptions 設置下豁免條件,就能愉快滴使用反射了。

IsExempted 方法裡面調用 DoesPrefixMatch 方法。DoesPrefixMatch是對方法簽名進行前綴匹配。所有Java方法類的簽名都是以 L 開頭,這樣就可以直接傳個 L 進去,所有的隱藏API全部被赦免了!

另一種繞過 Android P以上非公開API限制的辦法

『貳』 黑名單介面調用失敗

服務介面調用失敗 說明這個服務胡攜伍調用的方式,或接受的參隱棗數有問題。 你需要與服務提供方進行對接,了褲或解是以什麼協議,什麼方式這些基本的參數

『叄』 OkHttp源碼解析 (三)——代理和路由

初看OkHttp源碼,由於對Address、Route、Proxy、ProxySelector、RouteSelector等理解不夠,讀源碼非常吃力,看了幾遍依然對於尋找復用連接、創建連接、連接伺服器、連接代理伺服器、創建隧道連接等邏輯似懂非懂,本篇決定梳理一遍相關的概念及基本原理。

● HTTP/1.1(HTTPS)
● HTTP/2
● SPDY

一個http請求的流程(直連):
1、輸入url及參數;
2、如果是url是域名則解析ip地址,可能對應多個ip,如果沒有指定埠,則用默認埠,http請求用80;
3、創建socket,根據ip和埠連接伺服器(socket內部會完成3次TCP握手);
4、socket成功連接後,發送http報文數據。

一個https請求的流程(直連):
1、輸入url及參數;
2、如果是url是域名則解析ip地址,可能對應多個ip,如果沒有指定埠,則用默認埠,https請求用443;
3、創建socket,根據ip和埠連接伺服器(socket內部會完成3次TCP握手);
4、socket成功連接後進行TLS握手,可通過java標准款提供的SSLSocket完成;
5、握手成功後,發送https報文數據。

1、分類
● HTTP代理:普通代理、隧道代理
● SOCKS代理:SOCKS4、SOCKS5

2、HTTP代理分類及說明
普通代理
HTTP/1.1 協議的第一部分。其代理過程為:
● client 請求 proxy
● proxy 解析請求獲取 origin server 地址
● proxy 向 origin server 轉發請求
● proxy 接收 origin server 的響應
● proxy 向 client 轉發響應
其中proxy獲取目的伺服器地址的標准方法是解析 request line 里的 request-URL。因為proxy需要解析報文,因此普通代理無法適用於https,因為報文都是加密的。

隧道代理
通過 Web 代理伺服器用隧道方式傳輸基於 TCP 的協議。
請求包括兩個階段,一是連接(隧道)建立階段,二是數據通信(請求響應)階段,數據通信是基於 TCP packet ,代理伺服器不會對請求及響應的報文作任何的處理,都是原封不動的轉發,因此可以代理 HTTPS請求和響應。
代理過程為:
● client 向 proxy 發送 CONNET 請求(包含了 origin server 的地址)
● proxy 與 origin server 建立 TCP 連接
● proxy 向 client 發送響應
● client 向 proxy 發送請求,proxy 原封不動向 origin server 轉發請求,請求數據不做任何封裝,為原生 TCP packet.

3、SOCKS代理分類及說明
● SOCKS4:只支持TCP協議(即傳輸控制協議)
● SOCKS5: 既支持TCP協議又支持UDP協議(即用戶數據包協議),還支持各種身份驗證機制、伺服器端域名解析等。
SOCK4能做到的SOCKS5都可得到,但反過來卻不行,比如我們常用的聊天工具QQ在使用代理時就要求用SOCKS5代理,因為它需要使用UDP協議來傳輸數據。

有了上面的基礎知識,下面分析結合源碼分析OkHttp路由相關的邏輯。OkHttp用Address來描述與目標伺服器建立連接的配置信息,但請求輸入的可能是域名,一個域名可能對於多個ip,真正建立連接是其中一個ip,另外,如果設置了代理,客戶端是與代理伺服器建立直接連接,而不是目標伺服器,代理又可能是域名,可能對應多個ip。因此,這里用Route來描述最終選擇的路由,即客戶端與哪個ip建立連接,是代理還是直連。下面對比下Address及Route的屬性,及路由選擇器RouteSelector。

描述與目標伺服器建立連接所需要的配置信息,包括目標主機名、埠、dns,SocketFactory,如果是https請求,包括TLS相關的SSLSocketFactory 、HostnameVerifier 、CertificatePinner,代理伺服器信息Proxy 、ProxySelector 。

Route提供了真正連接伺服器所需要的動態信息,明確需要連接的伺服器IP地址及代理伺服器,一個Address可能會有很多個路由Route供選擇(一個DNS對應對個IP)。

Address和Route都是數據對象,沒有提供操作方法,OkHttp另外定義了RouteSelector來完成選擇的路由的操作。

1、讀取代理配置信息:resetNextProxy()

讀取代理配置:
● 如果有指定代理(不讀取系統配置,在OkHttpClient實例中指定),則只用1個該指定代理;
● 如果沒有指定,則讀取系統配置的,可能有多個。

2、獲取需要嘗試的socket地址(目標伺服器或者代理伺服器):resetNextInetSocketAddress()

結合Address的host和代理,解析要嘗試的套接字地址(ip+埠)列表:
● 直連或者SOCK代理, 則用目標伺服器的主機名和埠,如果是HTTP代理,則用代理伺服器的主機名和埠;
● 如果是SOCK代理,根據目標伺服器主機名和埠號創建未解析的套接字地址,列表只有1個地址;
● 如果是直連或HTTP代理,先DNS解析,得到InetAddress列表(沒有埠),再創建InetSocketAddress列表(帶上埠),InetSocketAddress與InetAddress的區別是前者帶埠信息。

3、獲取路由列表:next()

選擇路由的流程解析:
● 遍歷每個代理對象,可能多個,直連的代理對象為Proxy.DIRECT(實際是沒有中間代理的);
● 對每個代理獲取套接字地址列表;
● 遍歷地址列表,創建Route,判斷Route如果在路由黑名單中,則添加到失敗路由列表,不在黑名單中則添加到待返回的Route列表;
● 如果最後待返回的Route列表為空,即可能所有路由都在黑名單中,實在沒有新路由了,則將失敗的路由集合返回;
● 傳入Route列表創建Selection對象,對象比較簡單,就是一個目標路由集合,及讀取方法。

為了避免不必要的嘗試,OkHttp會把連接失敗的路由加入到黑名單中,由RouteDatabase管理,該類比較簡單,就是一個失敗路由集合。

1、創建Address
Address的創建在RetryAndFollowUpInteceptor里,每次請求會聲明一個新的Address及StreamAllocation對象,而StreamAllocation使用Address創建RouteSelector對象,在連接時RouteSelector確定請求的路由。

每個Requst都會構造一個Address對象,構造好了Address對象只是有了與伺服器連接的配置信息,但沒有確定最終伺服器的ip,也沒有確定連接的路由。

2、創建RouteSelector
在StreamAllocation聲明的同時會聲明路由選擇器RouteSelector,為一次請求尋找路由。

3、選擇可用的路由Route

下面在測試過程跟蹤實例對象來理解,分別測試直連和HTTP代理HTTP2請求路由的選擇過程:
● 直連請求流程
● HTTP代理HTTPS流程
請求url: https://www.jianshu.com/p/63ba15d8877a

1、構造address對象

2、讀取代理配置:resetNextProxy

3、解析目標伺服器套接字地址:resetNextInetSocketAddress

4、選擇Route創建RealConnection

5、確定協議

測試方法:
● 在PC端打開Charles,設置埠,如何設置代理,網上有教程,比較簡單;
● 手機打開WIFI,選擇連接的WIFI修改網路,在高級選項中設置中指定了代理伺服器,ip為PC的ip,埠是Charles剛設置的埠;
● OkHttpClient不指定代理,發起請求。

1、構造address對象

2、讀取代理配置:resetNextProxy

3、解析目標伺服器套接字地址:resetNextInetSocketAddress

4、選擇Route創建RealConnection

5、創建隧道
由於是代理https請求,需要用到隧道代理。

從圖可以看出,建立隧道其實是發送CONNECT請求,header包括欄位Proxy-Connection,目標主機名,請求內容類似:

6、確定協議,SSL握手

1、代理可分為HTTP代理和SOCK代理;
2、HTTP代理又分為普通代理和隧道代理;普通代理適合明文傳輸,即http請求;隧道代理僅轉發TCP包,適合加密傳輸,即https/http2;
3、SOCK代理又分為SOCK4和SOCK5,區別是後者支持UDP傳輸,適合代理聊天工具如QQ;
4、沒有設置代理(OkHttpClient沒有指定同時系統也沒有設置),客戶端直接與目標伺服器建立TCP連接;
5、設置了代理,代理http請求時,客戶端與代理伺服器建立TCP連接,如果代理伺服器是域名,則解釋代理伺服器域名,而目標伺服器的域名由代理伺服器解析;
6、設置了代理,代理https/http2請求時,客戶端與代理伺服器建立TCP連接,發送CONNECT請求與代理伺服器建立隧道,並進行SSL握手,代理伺服器不解析數據,僅轉發TCP數據包。

如何正確使用 HTTP proxy
OkHttp3中的代理與路由
HTTP 代理原理及實現(一)

『肆』 710.leetcode題目講解(Python):黑名單中的隨機數(Random Pick with Blacklist)

這道題信轎的我的主要思路是,先通過累積概率選出各個白名單區間,然後再在白名單區間內生成隨機數。網上也有一些其他更好的解法,比如對黑名單的成員進行映射等等,但思路不是特別直觀,有些解法生成隨機數的概率也並不均勻。

源碼地址:
https://github.com/jediL/LeetCodeByPython

其它題目:[leetcode題目答案講解匯總(Python版 持續更新)]
( https://www.jianshu.com/p/60b5241ca28e )

ps:滑襲肆如果您有好禪備的建議,歡迎交流 :-D,
也歡迎訪問我的個人博客 苔原帶 ( www.tundrazone.com )

『伍』 nginx如何實現負載均衡、限流、緩存、黑白名單和灰度發布

1.負載均衡配置

2.失敗重試配置

在fail_timeout時間內失敗了max_fails次請求後,認為上游伺服器不可用,就會將服務地址剔除掉,fail_timeout時間後會再次將伺服器加入存活列表進行重試。

limit_req_zone指令設置參數

參數說明

limit_req_zone定義在http塊中,$binary_remote_addr表示保存塌耐客戶端IP地址的二進制形式。

Zone定義IP狀態及URL訪問頻率的共享內存區域。zone=keyword標識區域的名字,以及冒號後面跟區域大小。16000個IP地址的狀態信息約1MB,例子區域可以存儲160000個IP地址。

Rate定皮敗義最大請求速率。示例中速率不能超過每秒10個請求。

設置限流

burs排隊大小,nodelay不限制單個請求間的時間。具體使用可以查看高並發場景如何使用nginx實現限流-實戰篇

不限流白名單

該配置說明 192.168.1.0/24網段的ip訪問是不限流的,其它限流。ip後面數字的含義

24表示子網掩碼:255.255.255.0

16表示子網掩碼:255.255.0.0

8表示子網掩碼:255.0.0.0

1.瀏覽器緩存 靜態資源緩存用expire

Response Header中添加了Expires和燃衫顫Cache-Control

所謂的靜態資源一般包括一直不變的圖像,如網站的logo,js、css靜態文件還有可下載的內容,媒體文件

協商緩存(add_header ETag/Last-Modified value)包括html文件,經常替換的圖片,經常需要修改的js、css文件和基本不變的api介面

不需要緩存包括用戶隱私等敏感數據,用戶經常變動的api介面

2.代理層緩存

在本地磁碟創建一個文件目錄,根據我們的配置把請求資源以k(key自定義,這邊用url的hash值)->v形式緩存到目錄里,並根據需求對內容設置緩存時長,比如狀態碼為200緩存10分鍾,其餘的緩存1分鍾等待。要清理緩存可以藉助purger的功能。如果ab測試/個性化需求時應禁用瀏覽器緩存,否則會因為緩存導致誤差。

方式一

方式二 lua+redis動態黑名單(openresty)

配置(/usr/local/openresty/nginx/conf/nginx.conf)

lua腳本編寫(ip_blacklist.lua)

1.根據cookie實現灰度發布

根據cooke查詢version值,根據version跳轉到對應的host,如果沒有匹配上的就跳轉到默認配置。

2.根據來路ip實現灰度發布

『陸』 CC攻擊的網頁源碼.. 我需要一份[是本機發包]

般cc攻擊都是針對網站的域名進行攻擊,比如網站域名是「xxx」,那麼攻擊者就在攻擊工具中設定攻擊對象為該域名然後實施攻擊。
對於這樣的攻擊措施是在ⅡS上取消這個域名的綁定,讓CC攻擊失去目標。具體操作步驟是:打開「ⅡS管理器」定位到具體站點右鍵「屬性」打開該站點的屬性面板,點擊IP地址右側的「高級」按鈕,選擇該域名項進行編輯,將「主機頭值」刪除或者改為其它的值(域名)。
實例模擬測試,取消域名綁定後Web伺服器的CPU馬上恢復正常狀態,通過IP進行訪問連接一切正常。但是不足之處也很明顯,取消或者更改域名對於別人的訪問帶來了不便,另外,對於針對IP的CC攻擊它是無效的,就算更換域名攻擊者發現之後,他也會對新域名實施攻擊。
域名欺騙解析
如果發現針對域名的CC攻擊,可以把被攻擊的域名解析到127.0.0.1這個地址上。知道127.0.0.1是本地回環IP是用來進行網路測試的,如果把被攻擊的域名解析到這個IP上,就可以實現攻擊者自己攻擊自己的目的,這樣他再多的肉雞或者代理也會宕機,讓其自作自受。另外,當Web伺服器遭受CC攻擊時把被攻擊的域名解析到國家有權威的政府網站或者是網警的網站,讓其網警來收拾他們。現在一般的Web站點都是利用類似「新網」這樣的服務商提供的動態域名解析服務,大家可以登錄進去之後進行設置。
更改Web埠
一般情況下Web伺服器通過80埠對外提供服務,因此攻擊者實施攻擊就以默認的80埠進行攻擊,所以,我們可以修改Web埠達到防CC攻擊的目的。運行ⅡS管理器,定位到相應站點,打開站點「屬性」面板,在「網站標識」下有個TCP埠默認為80,我們修改為其他的埠就可以了。
ⅡS屏蔽IP
我們通過命令或在查看日誌發現了CC攻擊的源IP,就可以在ⅡS中設置屏蔽該IP對Web站點的訪問,從而達到防範ⅡS攻擊的目的。在相應站點的「屬性」面板中,點擊「目錄安全性」選項卡,點擊「IP地址和域名現在」下的「編輯」按鈕打開設置對話框。在此窗口中我們可以設置「授權訪問」也就是「白名單」,也可以設置「拒絕訪問」即「黑名單」。比如我們可以將攻擊者的IP添加到「拒絕訪問」列表中,就屏蔽了該IP對於Web的訪問。
IPSec封鎖
IPSec是優秀的系統防火牆,在排除其他還有別的類型的DDOS攻擊時,針對CC攻擊可以用設置IP策略來對付攻擊。以219.128.*.43這個IP為例子,筆者實際操作對該IP的訪問封鎖。
第一步:「開始→管理工具」,打開「本地安全設置」,右鍵點擊「IP安全策略,在本地機器」選擇「創建IP安全策略」,然後點擊「下一步」,輸入策略「名稱」和「描述」。然後默認一路「下一步」創建了一個名為「封CC攻擊」的IPSec策略。
第二步:右鍵點擊「IP安全策略,在本地機器」選擇「管理IP篩選器表和篩選器操作」,在打開的窗口中點「添加」,在「IP 篩選器列表」窗口添人同第一步的名稱和描述信息。取消「使用添加向導」的勾選,然後點擊「添加」。在「IP 篩選器 屬性」窗口的「地址」選項下設置「源地址」為「192.168.1.6」,目標地址為「我的IP地址」,取消對「鏡像」的勾選;點擊「協議」選項卡,設置「協議類型」為「TCP」,設置「協議埠」為「從任意埠」到「此埠80」最後確定退出。
第三步:在「新規則 屬性」窗口中點選剛才創建的「封CC攻擊」規則,點擊「篩選器操作」選項卡下的「添加」,點選「安全措施」下的「阻止」,在「常規」選項卡下為該篩選器命名為「阻止CC攻擊」然後確定退出。
第四步:點選剛才創建的「阻止CC攻擊」篩選器,一路「確定」退出IP策略編輯器,可以看到在組策略窗口的中創建成功一個名為「封CC攻擊」的策略,然後右鍵點擊該策略選擇「指派」。這樣就實現了對該IP的封鎖。
防火牆
除了利用上述方法外,還可以通過第三方的防火牆進行防範,打開防護牆防火牆可以了,筆者以天鷹ddos防火牆為例進行演示。安裝好天鷹ddos防火牆即可開啟防護,傻瓜式配置界面,默認參數即可防護網站,誤封較少,智能識別蜘蛛。
防CC攻擊
使用加速樂雲防火牆,若遇到CC攻擊時,將自動啟動,可以在2分鍾內快速確定攻擊IP,並封鎖IP,完全攔截CC攻擊。

『柒』 水利五大員黑名單怎麼查詢

水利五大員黑名單查詢方法是:
1、首先登錄全國水利建設虛態氏市場監管服務平台官方網站。
2、然後進入主頁,在網站上找到查黑名單的差散介面。
3、最後點擊黑名單選閉好項即可查到水利五大員黑名單。

『捌』 java代碼中怎麼設置白名單黑名單

java代碼掘告清中設判前置白名單可以用命令,對白名單的內容友槐進行放行。而黑名單中的內容,可以用命令,讓其停止運行。

閱讀全文

與黑名單介面源碼相關的資料

熱點內容
程序員的種類及名稱 瀏覽:290
美國程序員薪資 瀏覽:12
黑石通匯證券伺服器什麼時候到期 瀏覽:391
東方財富app里我的關注怎麼看 瀏覽:747
bm3d單反級降噪演算法 瀏覽:457
華為安卓機激活時間怎麼查詢 瀏覽:850
如何用優盤重裝伺服器系統 瀏覽:317
日本結婚三代演算法 瀏覽:920
皓強工具解壓步驟 瀏覽:690
部隊抗洪搶險命令範文 瀏覽:888
歐姆龍plc編程軟體使用教程 瀏覽:594
ai文件pdf 瀏覽:912
騰訊雲伺服器掛載混合雲 瀏覽:758
智能小車用什麼單片機 瀏覽:463
java怎麼給窗口關閉 瀏覽:940
列舉51單片機的定址方式 瀏覽:706
剪輯app怎麼寫長篇文字 瀏覽:400
app專屬流量過月租怎麼不更新 瀏覽:655
王者程序員都有誰 瀏覽:77
給牛換腳掌解壓 瀏覽:388