pyhon3给socket模块设置代理(代码片段)

woaixuexi9999 woaixuexi9999     2022-12-16     157

关键词:

最近需要在公司学习socket编程,但是不能直接连接外网,需要设置一个代理才能正常访问。报错示例:

import socket

def blocking(wd):
    sock = socket.socket()
    sock.connect((www.baidu.com,80)) # 连接百度
    request = GET  HTTP/1.0
Host:www.baidu.com

.format(/s?wd=.format(wd)) # 构造http请求头
    response = b‘‘  # 用于接收数据
    sock.send(request.encode())  # 发送http请求
    chunk = sock.recv(1024)  # 一次接收1024字节数据
    while chunk:  # 循环接收数据,若没有数据了说明已接收完
        response += chunk  # 字符串拼接
        chunk = sock.recv(1024)
    print(response.decode())

if __name__ == __main__:
    blocking(python)

技术分享图片

解决办法:要使用代理,需要用到socks这两个包。socks在python3中不是自带的,所以需要通过pip install PySocks这个模块。 
增加如下带代码即可:

import socks
import socket
socks.set_default_proxy(socks.HTTP, 地址, 端口, True, 用户名, 密码)
socket.socket = socks.socksocket

修改后示例:

import socket
import socks  # pip install PySocks
socks.set_default_proxy(socks.HTTP,addr=192.168.105.71,port=80) #设置socks代理
socket.socket = socks.socksocket  # 把代理应用到socket
def blocking(wd):
    sock = socket.socket()
    sock.connect((www.baidu.com,80)) # 连接百度
    request = GET  HTTP/1.0
Host:www.baidu.com

.format(/s?wd=.format(wd)) # 构造http请求头
    response = b‘‘  # 用于接收数据
    sock.send(request.encode())  # 发送http请求
    chunk = sock.recv(1024)  # 一次接收1024字节数据
    while chunk:  # 循环接收数据,若没有数据了说明已接收完
        response += chunk  # 字符串拼接
        chunk = sock.recv(1024)
    print(response.decode())

if __name__ == __main__:
    blocking(python)

技术分享图片

可以看到已经正常请求到百度。

注意:socks的类型,即set_default_proxy的第一个参数,网上很多资料写的都是socks.SOCKS5。如果出现下面这个错误,请检查代理服务的类型,我这里改成socks.HTTP即可正常发送请求:

socks.GeneralProxyError: Socket error: Connection closed unexpectedly

 


代理池的维护(代码片段)

...atihttp,requests,redis-py,pyquery,flask二、代理池的架构分为4个模块:存储模块,获取模块,检测模块,借口模块、1、存储模块:使用Redis的有序集合,用来做代理的去重和状态标识,同时也是中心模块和基础模块,将其他模块串联起... 查看详情

apache_conf给iterm终端设置代理(代码片段)

查看详情

pyhon3实现机器学习经典算法id3决策树(代码片段)

一、ID3决策树概述  ID3决策树是另一种非常重要的用来处理分类问题的结构,它形似一个嵌套N层的IF…ELSE结构,但是它的判断标准不再是一个关系表达式,而是对应的模块的信息增益。它通过信息增益的大小,从根节点开始... 查看详情

socket模块(代码片段)

1、TCP和UDPTCP可靠性的实现:校验码接收方反馈信息包附带序号UDP:快不需要花费时间建立和关闭连接快偶尔丢失一两个消息包无所谓,但是TCP会严格检查快UDP的限制是一个信息包不超过64KB的数据TCP和UDP区别就是UDP不建立连接,... 查看详情

给iterm终端设置代理(代码片段)

本文介绍如何为自己的终端设置代理,从而实现在命令行中访问Google。1.背景当你使用SSFQ时,大部分浏览器都可以成功访问Google,但是在命令行下执行curlhttps://www.google.com时,会超时失败。对于类似的这种情况,本文将解释出现... 查看详情

ajax简单应用之个人简历页面搭建(代码片段)

1.搭建HTTP静态Web服务器。代码实现:1#1.导入socket模块2importsocket3importthreading456#创建服务器类7classHttpServerSocket(object):8#给服务器类的对象设置属性9def__init__(self):10#2.创建Socket对象11self.server_socket=socket.socket(socket.AF_I 查看详情

git设置代理(代码片段)

...的提交代码。刚巧我有国外的云服务器,自己搭建了一个socket5代理。设置代理命令设置代理gitconfig--globalhttps.proxy"socks5://ip:1080"#socksgitconfig--globalhttp.proxy\'socks5://127.0.0.1:1080\'gitconfig--globalhttps.proxy\'socks5://127.0.0.1:1080\'#httpgitconfig--gl... 查看详情

pyhon3实现机器学习经典算法knn(代码片段)

一、KNN概述   K-(最)近邻算法KNN(k-NearestNeighbor)是数据挖掘分类技术中最简单的方法之一。它具有精度高、对异常值不敏感的优点,适合用来处理离散的数值型数据,但是它具有  非常高的计算复杂度和空间复杂度... 查看详情

socket模块(代码片段)

socket模块简介socket即套接字,是用来建立网络通信连接的基础,大量的应用程序都是通过套接字来实现网络通信,诸如HTTP浏览器、RPC通信、FTP下载等。使用常见的TCP连接使用socket的通信原语,如bind/listen/accept/connect/recv/sendall等... 查看详情

socket模块(代码片段)

#服务端importsocketsk=socket.socket()#print(sk)address=(‘127.0.0.1‘,8000)sk.bind(address)sk.listen(3)print(‘waiting....‘)conn,addr=sk.accept()#print(conn,addr)inp=input(‘>>>‘)conn.send(bytes(inp 查看详情

socket模块的使用(代码片段)

socket模块学习网络编程,其实就是学习socket模块。socket是什么?翻译过来就是套接字,是对底层的TCPIPUDP等网络协议进行封装使得上层的应用程序开发者,不用直接接触这些复杂的,艰涩的协议。对于程序而言,他就是封装好的... 查看详情

网络编程之模块的使用(代码片段)

socket模块的使用1.模仿CS架构模型1.1简版服务器端importsocketserver=socket.socket()#创建一个服务器对象ip_port=(‘192.168.15.79‘,8080)#创建一个元组server.bind(ip_port)#将服务器和ip地址进行绑定server.listen(3)#设置服务器可以同时监听多少个客户... 查看详情

人性化的requests模块(响应与编码header处理cookie处理重定向与历史记录代理设置)(代码片段)

Requests库是第三方模块,需要额外进行安装。Requests是一个开源库pipinstallrequests去GitHub下载回来,进入解压文件,运行setup.py比urllib2实现方式的代码量少,下面是POST请求:importrequestspostdata=‘key‘:‘value‘r=requests.post(‘http://www.cn... 查看详情

nginx反向代理(代码片段)

...服务器进行通信的一种规范,主要在不同的场景使用以下模块实现不同的功能。 查看详情

ua池和代理池(代码片段)

...器过程中,下载中间件可以对请求进行一系列处理。比如设置请求的User-Agent,设置代理等(2)在下载器完成将Response传递给引擎中,下载中间件可以对响应进行一系列 查看详情

scrapy框架设置ua池与代理池񬪨(代码片段)

...过程中,下载中间件可以对请求进行一系列的处理。比如设置User-Agent、设置代理IP等。在下载器将Response传递给引擎的过程中,下载中间件可以对响应进行一 查看详情

scoket模块粘包问题tcp协议特点(代码片段)

scoket()模块函数用法importsocketsocket.socket(socket_family,socket_type,protocal=0)获取tcp/ip套接字tcpsock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)获取udp/ip套接字udpsock=socket.socket(socket.AF_INET,socket.S 查看详情

socket编程,socketserver模块(代码片段)

一、SocketServer的几种类型面向远程:TCP协议链接:socketserver.TCPServer(server_address,RequestHandlerClass,bind_and_activate=True).UDP协议链接:socketserver.UDPServer(server_address,RequestHandlerClass,bind_and_activate=Tr 查看详情