socket5代理簡單使用

oOo右右發表於2019-04-20

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

 

 

相關文章