socket5代理簡單使用
socket是什麼
有兩個程式,通過一個雙向的通訊連線實現資料交換,這個連線的一端就是一個soccet,也叫【套接字】;socket包括IP+埠,一個連線至少需要兩個socket,因為連線的一端就是一個socket。
一個應用程式通過一個socket和其他應用程式建立連線;
socket用於描述IP地址和埠,是一個通訊鏈的控制程式碼,可以用來實現不同虛擬機器或不同計算機之間的通訊。在Internet上的主機一般執行了多個服務軟體,同時提供幾種服務。每種服務都開啟一個Socket,並繫結到一個埠上,不同的埠對應於不同的服務。
socket5是什麼?
socket5 是一種代理協議,實際上是一個傳輸層代理協議,比http協議底層。
SOCKS5 是一個代理協議,它在使用TCP/IP協議通訊的前端機器和伺服器機器之間扮演一箇中介角色,使得內部網中的前端機器變得能夠訪問Internet網中的伺服器,或者使通訊更加安全。SOCKS5 伺服器通過將前端發來的請求轉發給真正的目標伺服器, 模擬了一個前端的行為。在這裡,前端和SOCKS5之間也是通過TCP/IP協議進行通訊,前端將原本要傳送給真正伺服器的請求傳送給SOCKS5伺服器,然後SOCKS5伺服器將請求轉發給真正的伺服器。
SOCKS5伺服器在將通訊請求傳送給真正伺服器的過程中,對於請求資料包本身不加任何改變。SOCKS5伺服器接收到真正伺服器的響應後,也原樣轉發給前端。因此,SOCKS5 協議是一種代理協議,對於各種基於 TCP/IP的應用層協議都能夠適應,幾乎是萬能的。它雖然不能理解自己轉發的資料的內部結構,但是它能夠忠實地轉發通訊包,完成協議本來要完成的功能。
socket5正向代理流程如下:
client 《----------使用TCP/IP協議通訊---------》socket5代理伺服器 《------使用TCP/IP協議通訊-----》後端真正伺服器
socket5代理和https代理(例如timyproxy)區別?
socket5代理伺服器:使用TCP/IP協議通訊。SOCKet5伺服器在將通訊請求傳送給真正伺服器的過程中,對於請求資料包本身不加任何改變。SOCKS5伺服器接收到真正伺服器的響應後,也原樣轉發給前端。
http代理伺服器:與SOCKS5協議不同,HTTP代理是通過HTTP協議進行的,HTTP代理伺服器軟體瞭解通訊包的內部結構,在轉發過程中還要對通訊進行某種程度的修改和轉換。和HTTP代理協議不同,SOCKS5實際上是一個傳輸層的代理協議。我們可以想象,如果每個具體的應用層協議都要設計對應的代理協議表達辦法,一個特定的代理伺服器無論如何也支援不過來那麼多新出現的協議。因此,可以說SOCKS5的出現緩解了各種具體協議需要專門設計代理協議的困難局面。不過,並不是凡是使用基於TCP/IP協議的應用協議的軟體,都可以無條件地透過SOCKS5伺服器進行通訊,還要求前端軟體本身具有SOCKS5的介面,才能利用SOCKS5代理伺服器。
centos7.4搭建socket5代理伺服器
一、安裝依賴
# yum install pam-devel openldap-devel openssl-devel
二、安裝socket5
# wget http://downloads.sourceforge.net/project/ss5/ss5/3.8.9-8/ss5-3.8.9-8.tar.gz # tar -xzvf ss5-3.8.9-8.tar.gz # cd ss5-3.8.9 # ./configure # make # make install |
三、配置socket5代理伺服器
1.安裝成功後配置檔案位置:
[root@test-01 ~]# cd /etc/opt/ss5/
[root@test-01 ss5]# ls
ss5.conf ss5.ha ss5.passwd
[root@test-01 ss5]# pwd
/etc/opt/ss5
2.修改配置檔案,不使用密碼:
# vim /etc/opt/ss5/ss5.conf
auth 0.0.0.0/0 - -
permit - 0.0.0.0/0 - 0.0.0.0/0 - - - - -
3.u:使用ss5.passwd帳號密碼登入,-:預設任何人都可使用
如果需要配置客戶端連線這個伺服器需要密碼的話,配置如下:
auth 0.0.0.0/0 - u
permit u 0.0.0.0/0 - 0.0.0.0/0 - - - - -
配置使用者、密碼:
# vim /etc/opt/ss5/ss5.passwd
##使用者 密碼
ttlsa 123456
4.預設埠是1080,修改預設的連結埠
vim /etc/sysconfig/ss5
在/etc/sysconfig/ss5這個檔案中,新增下面這一行命令,-b後面的引數代表監聽的ip地址和埠號
SS5_OPTS=" -u root -b 0.0.0.0:8080"
四、 啟動socket 5
# sh /etc/rc.d/init.d/ss5 start
doneting ss5 ...
預設情況ss5檔案沒有執行許可權,如果覺得使用sh來啟動麻煩,那麼按如下方法:
# chmod u x /etc/rc.d/init.d/ss5
# chkconfig --add ss5 //可選
# chkconfig ss5 on //可選
# service ss5 start
五、測試:
1.使用qq客戶端 socket5代理
2.使用python程式:
import socket # 內建庫 import requests # 需要安裝:pip install requests import socks # 需要安裝:pip install pysocks
# 代理伺服器IP(域名) socks5_proxy_host = 'xxxxxxxxx' # 代理伺服器埠號 socks5_proxy_port = 8888
# 設定代理 socks.set_default_proxy(socks.SOCKS5,socks5_proxy_host,socks5_proxy_port) socket.socket = socks.socksocket
# 某個必須通過代理才能訪問的網站 url = 'https://www.qlchat.com/' resp = requests.get(url)
# 檢視響應結果
print(resp.status_code) print(resp.text) |
在socket5代理伺服器上進行抓包驗證:
tcpdump -i any port 8888 -w test.cap
相關文章
- 將socket5代理轉換為http代理HTTP
- java 動態代理簡單使用Java
- 簡單介紹nginx反向代理及使用Nginx
- Python代理IP爬蟲的簡單使用Python爬蟲
- iOS UICollectionView的簡單使用和常用代理方法iOSUIView
- 動態代理竟然如此簡單!
- 最簡單實現跨域的方法:使用nginx反向代理跨域Nginx
- 模擬簡單的動態代理
- Nginx反向代理的簡單實現Nginx
- SourceGenerator 使用姿勢(1):生成代理類,實現簡單的AOP
- Kotlin:代理真的很簡單啊!Kotlin
- CGlib動態代理-簡單介紹CGLib
- 使用Netty和動態代理實現一個簡單的RPCNettyRPC
- nginx 反向代理做域名轉發簡單配置Nginx
- 簡單使用 rocketmqMQ
- GCDAsyncSocket 簡單使用GC
- JPTabBar簡單使用tabBar
- Quartz 簡單使用quartz
- Github 簡單使用Github
- gorm 簡單使用GoORM
- ListView簡單使用View
- GCD簡單使用GC
- 簡單,使用WKWebViewWebView
- git簡單使用Git
- sftp簡單使用FTP
- redux簡單使用Redux
- jq 簡單使用
- Kdevelop的簡單使用和簡單除錯dev除錯
- kotlin代理模式就是這麼簡單(委託)Kotlin模式
- prometheus 簡單使用及簡單 middleware 開發Prometheus
- butterfly簡單使用教程
- docker的簡單使用Docker
- postman的簡單使用Postman
- RecyclerView的簡單使用View
- git的簡單使用Git
- java 反射簡單使用Java反射
- WebWorker 簡單使用方式Web
- BootStrapValidate 簡單使用boot