golang代理客戶端,golang https客戶端

本文目錄一覽:

golang 反向代理實例

首先解釋一下反向代理,所謂的反向代理就是代理服務器,充當Web服務器網關的代理服務器。當請求發送到使用反向代理的Web服務器時,他們將先轉到反向代理,由該代理將確定是將其路由到制定的Web服務器。

這個程序是將 本地的8086 端口作為代理服務器,代理上篇 golang HTTP實例 裡面的8090端口

核心只有一個函數 httputil.NewSingleHostReverseProxy

兩個服務同時運行

效果如下:

代理服務器訪問 8086端口時候

訪問原始的端口8090時候

golang 使用Socket5代理

socket代理又分為socket4和sockt5代理,其中socket4隻能支持TCP協議,而socket5則同時支持TCP協議和UDP協議。

golang SSH客戶端三件套 – 1遠程連接 shell

golang SSH客戶端系列文章目錄

SSH(Secure Shell)協議在遠程登錄時比較常用,但是除此之外還有一些其它的功能也很好用,比如端口映射,X11轉發,sftp文件傳輸等。

以下三篇文章將介紹golang版SSH的遠程登錄功能,端口映射功能及sftp文件傳輸功能。X11包含GUI的一些操作,沒有找到相關的包,故不做介紹

通過golang自帶的ssh包 golang.org/x/crypto/ssh 可以實現遠程登錄功能, 默認是不支持tab鍵和上下箭頭的 ,

通過導入golang.org/x/crypto/ssh/terminal來創建VT100終端可以支持tab等功能,讓golang版本的ssh客戶端體驗和平時用的其它客戶端差不多。

[golang] fasthttp 使用http代理

golang net/http標準庫的client是可以配置各種代理的,http/https/sock5等,不過fasthttp僅支持配置sock5代理,通過定義fasthttp dialfunc實現:

項目中碰到的問題是,ops只提供了用squid搭建的http代理,所以是想重新定義一個http代理的dialfunc,找了fasthttp github倉庫的issue,作者提供了一個dialFunc

經測試,訪問https的站點是OK的,訪問http的站點不行,代理連接不上。先說一下http/https代理的區別,再說原因。

使用代理訪問https網站時,會先發CONNECT請求,讓代理與目標站點建立一個http tunnel,之後在這個tunnel基礎上進行傳輸,對應到上面的dialFunc過程就是:

可以看到http站點是不需要發CONNECT請求的,而是直接將目標站點的url作為path 填寫在http請求頭中。

為何上面的dialfunc訪問http站點不行呢,查了squid代理的文檔,發現squid默認會禁止非https站點通過CONNECT方法建立通道,自己搭了個squid代理去掉配置項,發現上面的dialfunc是可以訪問http、https站點的,就是說http,https都先建立通過,再請求。

看了fasthttp的源碼,沒辦法在請求前修改request header中的path為目標站點url,所以如果需要通過fasthttp使用http代理,那麼可以使用上面的dialfunc,同時代理需要允許非443端口的站點可以建立通道。如果做不到這一點,那麼還是建議使用標準庫net/http的client,會更方便一點。

APNS推送Golang SDK使用Proxy代理

蘋果的消息推送是通過請求域名: 實現的,該域名解析結果為美國,這引發了兩個問題:

1、接口請求時間長,性能低,而且容易請求超時報錯

2、高峰期推送請求錯誤率升高

總體思路:增加一個美國代理服務器,通過代理服務器請求蘋果消息推送服務

1、原來流程

2、現在流程

3、具體方案實施選擇

選擇一:proxy服務器,部署一個正向代理服務,提供push消息的正向代理,消息通過代理服務器送達蘋果服務端

選擇二:proxy服務器,獨立實現、部署一個 標準的apns服務,負責 ios消息推送。將需要走美國節點的請求轉發到該proxy節點

具體情況、具體分析,應思考的點:

問題一、蘋果官方提供的SDK中,不支持設置代理服務器。官方SDK不適合更改,對以後系統更新不利

問題二、只有蘋果的push服務需要代理,其他例如華為、小米、vivo不應走海外代理

問題三、代理安全性

問題四、代理方案下,有重試邏輯。 如何準確定義和判斷失敗, 可能會引起消息重複推送

問題五、實現簡單、有效,正向代理方式:只需實現一個實例化對象方法,其他利用原始sdk即可。獨立apns服務方式:需要實現一個apns服務,國內、國外均需服務部署,需要增加獨立的開發和運營成本,另外還得改造調用服務,實現請求調度,優點服務獨立、單一,具備一個單獨微服務條件

github.com/sideshow/apns2

方法一: 修改SDK文件

第一步:設置環境變量

第二步:修改apns2.NewClient方法

方法二: 從新定義一個NewClient方法

原創文章,作者:WAHP,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/146902.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
WAHP的頭像WAHP
上一篇 2024-10-31 15:33
下一篇 2024-10-31 15:33

相關推薦

發表回復

登錄後才能評論