最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python簡單實現(xiàn)的代理服務(wù)器端口映射功能示例

 更新時間:2018年04月08日 14:21:26   作者:chengqiuming  
這篇文章主要介紹了Python簡單實現(xiàn)的代理服務(wù)器端口映射功能,結(jié)合實例形式分析了Python模擬服務(wù)器、代理服務(wù)器及客戶端訪問的相關(guān)操作技巧,需要的朋友可以參考下

本文實例講述了Python簡單實現(xiàn)的代理服務(wù)器端口映射功能。分享給大家供大家參考,具體如下:

一 代碼

1、模擬服務(wù)端代碼

import sys
import socket
import threading
#回復(fù)消息,原樣返回
def replyMessage(conn):
  while True:
    data = conn.recv(1024)
    conn.send(data)
    if data.decode().lower() == 'bye':
      break
  conn.close()
def main():
  sockScr = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  sockScr.bind(('', port))
  sockScr.listen(200)
  while True:
    try:
      conn, addr = sockScr.accept()
      #只允許特定主機訪問本服務(wù)器
      if addr[0] != onlyYou:
        conn.close()
        continue
      #創(chuàng)建并啟動線程
      t = threading.Thread(target=replyMessage, args=(conn,))
      t.start()
    except:
      print('error')
if __name__ == '__main__':
  try:
    #獲取命令行參數(shù)
    port = int(sys.argv[1])
    onlyYou = sys.argv[2]
    main()
  except:
    print('Must give me a number as port')

2、模擬代理服務(wù)器代碼

import sys
import socket
import threading
def middle(conn, addr):
  #面向服務(wù)器的Socket
  sockDst = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  sockDst.connect((ipServer,portServer))
  while True:
    data = conn.recv(1024).decode()
    print('收到客戶端消息:'+data)
    if data == '不要發(fā)給服務(wù)器':
      conn.send('該消息已被代理服務(wù)器過濾'.encode())
      print('該消息已過濾')
    elif data.lower() == 'bye':
      print(str(addr)+'客戶端關(guān)閉連接')
      break
    else:
      sockDst.send(data.encode())
      print('已轉(zhuǎn)發(fā)服務(wù)器')
      data_fromServer = sockDst.recv(1024).decode()
      print('收到服務(wù)器回復(fù)的消息:'+data_fromServer)
      if data_fromServer == '不要發(fā)給客戶端':
        conn.send('該消息已被代理服務(wù)器修改'.encode())
        print('消息已被篡改')
      else:
        conn.send(b'Server reply:'+data_fromServer.encode())
        print('已轉(zhuǎn)發(fā)服務(wù)器消息給客戶端')
  conn.close()
  sockDst.close()
def main():
  sockScr = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  sockScr.bind(('', portScr))
  sockScr.listen(200)
  print('代理已啟動')
  while True:
    try:
      conn, addr = sockScr.accept()
      t = threading.Thread(target=middle, args=(conn, addr))
      t.start()
      print('新客戶:'+str(addr))
    except:
      pass
if __name__ == '__main__':
  try:
    #(本機IP地址,portScr)<==>(ipServer,portServer)
    #代理服務(wù)器監(jiān)聽端口
    portScr = int(sys.argv[1])
    #服務(wù)器IP地址與端口號
    ipServer = sys.argv[2]
    portServer = int(sys.argv[3])
    main()
  except:
    print('Sth error')

3、模擬客戶端代碼

import sys
import socket
def main():
  sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  sock.connect((ip, port))
  while True:
    data = input('What do you want to ask:')
    sock.send(data.encode())
    print(sock.recv(1024).decode())
    if data.lower() == 'bye':
      break
  sock.close()
if __name__ == '__main__':
  try:
    #代理服務(wù)器的IP地址和端口號
    ip = sys.argv[1]
    port = int(sys.argv[2])
    main()
  except:
    print('Sth error')

二 運行結(jié)果

三 運行說明

從結(jié)果可以看出,代理服務(wù)器代碼能夠?qū)蛻舳撕头?wù)器之間的內(nèi)容進(jìn)行記錄,也能夠修改雙方通信內(nèi)容,這樣實際存在潛在危險。只要代理服務(wù)想這樣做,客戶在網(wǎng)絡(luò)上的通信就沒有什么隱私可言了,因此如果涉及金錢交易,最好不要使用代理服務(wù)器。

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python Socket編程技巧總結(jié)》、《Python URL操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程

希望本文所述對大家Python程序設(shè)計有所幫助。

相關(guān)文章

  • python禁止位置傳參函數(shù)詳解

    python禁止位置傳參函數(shù)詳解

    文章介紹了Python3.x中的關(guān)鍵字參數(shù)特性,說明了如何在函數(shù)定義中使用*符號來限制參數(shù)只能通過關(guān)鍵字傳遞,而不是位置,這種特性在處理參數(shù)較多或順序可能導(dǎo)致混淆的函數(shù)時特別有用,提高了代碼的可讀性和健壯性
    2024-11-11
  • 在Python中使用__slots__方法的詳細(xì)教程

    在Python中使用__slots__方法的詳細(xì)教程

    這篇文章主要介紹了在Python中使用__slots__方法的詳細(xì)教程,__slots__方法是Python的一個重要內(nèi)置類方法,代碼基于Python2.x版本,需要的朋友可以參考下
    2015-04-04
  • PyQt5的安裝配置過程,將ui文件轉(zhuǎn)為py文件后顯示窗口的實例

    PyQt5的安裝配置過程,將ui文件轉(zhuǎn)為py文件后顯示窗口的實例

    今天小編就為大家分享一篇PyQt5的安裝配置過程,將ui文件轉(zhuǎn)為py文件后顯示窗口的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • flask應(yīng)用部署到服務(wù)器的方法

    flask應(yīng)用部署到服務(wù)器的方法

    這篇文章主要介紹了flask應(yīng)用部署到服務(wù)器的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • python中requests模塊的使用方法

    python中requests模塊的使用方法

    這篇文章主要介紹了python中requests模塊的使用方法,實例分析了requests模塊的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-04-04
  • python利用scatter繪畫散點圖

    python利用scatter繪畫散點圖

    這篇文章主要介紹了python利用scatter繪畫散點圖,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下,希望對你的學(xué)習(xí)有所幫助
    2022-06-06
  • Python找出文件中使用率最高的漢字實例詳解

    Python找出文件中使用率最高的漢字實例詳解

    這篇文章主要介紹了Python找出文件中使用率最高的漢字,涉及Python針對字符串與中文的相關(guān)操作技巧,需要的朋友可以參考下
    2015-06-06
  • pytorch 中autograd.grad()函數(shù)的用法說明

    pytorch 中autograd.grad()函數(shù)的用法說明

    這篇文章主要介紹了pytorch 中autograd.grad()函數(shù)的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • Python中生成隨機整數(shù)的三種方法

    Python中生成隨機整數(shù)的三種方法

    本文介紹了如何在Python中生成一到一百隨機整數(shù)的多種方法,包括random庫,NumPy庫和random.sample函數(shù)這三種方法,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • Python如何繪制概率分布直方圖淺析

    Python如何繪制概率分布直方圖淺析

    項目中在前期經(jīng)常要看下數(shù)據(jù)的分布情況,這對于探究數(shù)據(jù)規(guī)律非常有用,概率分布表示樣本數(shù)據(jù)的模樣,使用Python繪制頻率分布直方圖非常簡潔,因為用的頻次非常高,這篇文章主要給大家介紹了關(guān)于Python如何繪制概率分布直方圖的相關(guān)資料,需要的朋友可以參考下
    2021-12-12

最新評論

崇左市| 光山县| 扶沟县| 会东县| 达日县| 隆化县| 凤翔县| 大连市| 栾城县| 镇坪县| 类乌齐县| 柞水县| 靖边县| 怀安县| 历史| 宜宾县| 梁山县| 江达县| 萍乡市| 富蕴县| 左权县| 许昌县| 马尔康县| 灵山县| 顺平县| 六安市| 江陵县| 北流市| 栖霞市| 贺兰县| 高尔夫| 恭城| 博湖县| 辽宁省| 阿拉善右旗| 元朗区| 中阳县| 周口市| 海原县| 水城县| 同江市|