您的位置:首页 >文章内容
爬虫如何实现http代理
来源: 作者:admin 时间:2018-11-14 17:17:29

随着现在社会的境界快速发展,网络的发展也是日新月异,经济社会逐渐走向了信息社会,网络社会。网络渗透到人们的生活和工作的方方面面,代理IP也成为了人们生活、工作不可或缺的一部分。说到代理其实代理的意思就跟带话差不多,比如说,A要跟C通信,但是没有通信渠道,这个时候就需要一个A与C之间的连接,来帮助传话,这个原理明白了,实现代理就简单易懂了。那么python 如何实现http代理呢?请看下面的代码。

  import socket

  import threading

  class ProxyServer():

  def __init__(self):

  self.ListenSock = socket()

  self.ListenSock.bind()

  self.Clients = []

  def listen_thread(self):

  self.ListenSock.listen()

  while(1):

  self.Clients.append(ProxyClient(self.ListenSock.accpet())

  def start_work(self):

  start listen_thread

  while(1):

  #从内存中踢出已经断开的连接

  for i in self.client:

  if i not alive:

  self.clients.remove(i)

  上面伪代码中的ProxyClient就是处理每个客户端的类

  class ProxyClient():

  def __init__(self, Csock):

  self.Csock = Csock

  self.Rsock = None

  start request_process_thread

  def request_process_thread(self):

  while(1):

  req = self.Csock.recv()

  #客户端断开了

  if req == '':

  return

  #从请求中获得客户端想要访问的地址

  addr = get addr from req

  if self.Rsock == None:

  self.Rsock.connect(addr)

  #把客户端的请求转出去

  self.Rscok.send(req)

  #开启接受web data的线程,把web data转发给客户端

  start recv_web_data_thread

  else:

  #如果连接已经建立就不要再去创建新的

  self.Rsock.send(req)

  def recv_web_data_thread(self):

  while(1):

  data = self.Rsock.recv()

  if data=='':

  return

  #把web data转发给客户端

  self.Csock.send(data)


 这就是小编带来的分享了,程序员大牛可以试试效果哦。


按字母排序文章
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
相关文章内容简介更多>>
最新标签
推荐阅读
  • 23 2018-11
    HTTP代理与SOCKS代理一样吗?

    大家应该都听过HTTP代理与SOCKS代理,那么它们一样吗?有什么区别呢?请看下面的介绍

  • 29 2018-09
    国内代理ip软件哪个好用

    随着互联网应用技术的飞速发展与互联网普及率的持续攀升,代理IP在生活中的应用越来越多, 常常会听到别人说,你的浏览器要设代理IP,这样你上网的速度会比较快。

  • 26 2018-10
    使用高匿代理绝对安全吗?

    大家都知道代理IP分为三种:透明代理,普通匿名代理,高级匿名代理。其中高匿代理应该是最为安全,了无痕迹的。那么用了高匿代理后是否从此就可以高枕无忧、为所欲为呢?

  • 25 2019-10
    代理IP​访问变慢的原因

    代理IP​访问变慢的原因,在使用代理IP的过程中总会碰到一些让人郁闷无比的问题,比如代理IP连接不上,又如经历了千辛万苦总算连上了,发现慢如蜗牛等等,今天我们来看看使用代理IP速度

在线客服

QQ资讯

上班时间