2016-04-03 22 views
1

我有一些PHP代碼,其中使用套接字在服務器和客戶端之間傳遞XML數據。 socket_create(AF_INET, SOCK_STREAM, SOL_TCP)socket_read()socket_write()是用於傳遞XML而不是HTTP請求的函數。在PHP中使用代理與套接字

現在,如果我想使用客戶端的代理來連接到服務器,我怎麼能在PHP中做到這一點?

我是新來的套接字,從我收集到的信息中,存在這個庫https://github.com/clue/php-socks,目前我還沒有完全理解,但想法是使用相同的庫來設置中間人,這個庫本質上就是這種情況下的代理。我將如何使用從https://www.socks-proxy.net/獲得的SOCKS4/5代理或付費代理?上面提到的庫是唯一的選擇嗎?感覺像PHP應該已經內置了一些東西。

請指教。

回答

0

這應該是一個評論,但它有點長。

感覺就像PHP應該有一些建在已經

我竭力想象,爲什麼它應該。 PHP是一種爲服務器端Web開發設計的語言。代理是客戶端技術。說了curl擴展對HTTP代理的全面支持。

沒有單一的代理協議。當然,SOCKS和HTTP是代理最明顯的協議,但還有很多。是否有選擇SOCKS的具體原因?

如果是我,我會使用iptables(Linux)或socat實例或haproxy(Unix,MSWindows)設置透明端口轉發。

+0

1)由於PHP具有socket_ *函數,因此感覺PHP核心開發人員會考慮代理支持,並且不會將其忽略掉,除非他們有足夠的理由這樣做。 2)SOCKS代理,因爲我在這裏使用流(我不是嗎?)3)基於iptables或服務器將無法工作,因爲客戶端不是固定到一臺服務器,它必須是基於應用程序的。 任何你可以指向我的更多的研究或解決方案或直接的代碼示例? – Ashfame

+0

我正在努力將意義與您的迴應聯繫起來。關於1)由於PHP支持套接字,因此您可以在PHP代碼中實現額外的網絡抽象,如您所引用的產品所示,而不是PHP代碼所示。 2)如果你的意思是說你沒有使用標準協議,如HTTP或SMTP ....那麼,是的,這不包括協議特定的代理,但不是所有其他重新路由流量的方式。我不知道你的意思3 – symcbean

+0

1)我只是很難理解需要使用外部庫來支持代理,而curl具有內置的代理支持,但我想沒關係,如果這是唯一的路線。 2)SOCKS代理可以與任何協議一起工作,所以計算出它可以和我的用例一起工作3)這個代碼必須打包和分發,因此代理支持必須在應用程序本身中構建 – Ashfame