前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >关于EOF occurred in v

关于EOF occurred in v

作者头像
py3study
发布于 2020-01-06 10:34:12
发布于 2020-01-06 10:34:12
1.4K00
代码可运行
举报
文章被收录于专栏:python3python3
运行总次数:0
代码可运行

关于EOF occurred in violation of protocol (_ssl.c:661)的解决办法

直接上代码(python版本2.7) `import requests r = requests.get('https://www.zjkill.com/news/') r.encoding = 'utf8' print r.text print r.status_code,r.url` 报错

requests.exceptions.SSLError: ("bad handshake: SysCallError(-1, 'Unexpected EOF')",) 经过一番查找,发现是requests不在支持3DES stream cipher。 下面是解决办法,注意ruquests版本2.11及以下的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.poolmanager import PoolManager
import ssl

class MyAdapter(HTTPAdapter):
    def init_poolmanager(self, connections, maxsize, block=False):
        self.poolmanager = PoolManager(num_pools=connections,
                                       maxsize=maxsize,
                                       block=block,
                                       ssl_version=ssl.PROTOCOL_TLSv1)
s = requests.Session()
s.mount('https://', MyAdapter())
r = requests.get('https://www.zjkill.com/news/')
r.encoding = 'utf8'
print r.text

如果requests版本是2.12及以上

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import requests
                from requests.adapters import HTTPAdapter
                from requests.packages.urllib3.util.ssl_ import create_urllib3_context
                CIPHERS = (
                    'ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+HIGH:'
                    'DH+HIGH:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+HIGH:RSA+3DES:!aNULL:'
                    '!eNULL:!MD5'
                )

                class DESAdapter(HTTPAdapter):
                    """
                    A TransportAdapter that re-enables 3DES support in Requests.
                    """

                    def init_poolmanager(self, *args, **kwargs):
                        context = create_urllib3_context(ciphers=CIPHERS)
                        kwargs['ssl_context'] = context
                        return super(DESAdapter, self).init_poolmanager(*args, **kwargs)

                    def proxy_manager_for(self, *args, **kwargs):
                        context = create_urllib3_context(ciphers=CIPHERS)
                        kwargs['ssl_context'] = context
                        return super(DESAdapter, self).proxy_manager_for(*args, **kwargs)

                s = requests.Session()
                s.mount('https://www.zjkill.com/', DESAdapter())
                r = s.get(url)
                r.encoding = 'utf8'
                print r.text

因为我用的python2.7,python3的解决办法就不写,那个更简单,可以自行网上搜索。 附上参考链接Configuring TLS With Requests

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/10/08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
一日一技: Python 如何突破反爬虫指纹 JA3
在前几天的文章《为什么随机 IP、随机 UA 也逃不掉被反爬虫的命运》里面,我介绍了 JA3指纹算法。这个算法可以在你改掉 IP 和 UA 的情况下依然识别到你。
青南
2021/09/09
4.5K1
爬虫指纹 JA3
JA3 指纹里面,很大的一块就是 Cipher Suits,也就是加密算法。而 requests 里面默认的加密算法如下 参考文件:https://www.cnblogs.com/Eeyhan/p/15662849.html ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+HIGH:DH+HIGH:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+HIGH:RSA+3DES:!aNULL:!eNULL:!MD5
小小咸鱼YwY
2022/05/09
1K0
爬虫程序部署后常见问题整理
在爬虫程序本地测试运行通过之后,一些同学就迫不及待的将程序部署到服务器上进行正式运行,然后跑一段时间之后就出现了各种错误甚至程序退出,这里将一些常见的问题整理下供参考:
python亦希
2022/01/14
1840
curl_cffi: 支持原生模拟浏览器 TLS/JA3 指纹的 Python 库
越来越多的网站开始使用 TLS 指纹反爬虫,而 Python 中竟然没有任何方法解决这个问题。前一阵看到由国外大神写了一个 curl-impersonate 命令行工具,可以完美模拟主流浏览器的指纹,遂用 cffi 封装成了 Python 库 curl_cffi,这样就可以继续愉快地写爬虫啦!
爬虫技术学习
2023/03/06
4.1K0
curl_cffi: 支持原生模拟浏览器 TLS/JA3 指纹的 Python 库
绕过TLS/akamai指纹护盾
在之前的项目中,发现一些网站使用不同的客户端会得到不同的结果,比如使用浏览器访问正常没问题,但使用python写脚本或者curl请求就会被拦截,当时也尝试数据包1:1还原,但还是不能解决。
用户1709153
2023/05/06
3.6K0
【粉丝投稿】Aiohttp 与 Scrapy 如何绕过 JA3指纹反爬机制
前几天观摩k大破解JA3的文章有感,可惜里面的JA3破解的库还是老掉牙的requests, 现在我看到了肯定是想办法改成基于asyncio的库啊。这样的话,在scrapy里面启用AsyncioReactor也能继续复用这个算法,不至于阻塞事件循环。
青南
2021/09/09
2.4K0
sentry部署整理 原
sentry是python开发的一个应用,使用python uWSG框架运行,所有安装完sentry要记得在nginx的代理上禁用掉/admin路径,不然uwsg的后台管理入口就泄漏了 具体的安装资料地址为:
domain0
2018/08/01
2.2K0
如何解决爬虫中网站需要进行登陆问题
作为爬虫工作者,在日常爬虫工作中遇到目标网站的反爬机制只是其中的一部分困难。偶尔还会遇到我们访问一些目标凝网站的时候需要使用cookie登陆,服务器会认为你是一个已登陆的用户,所以就会返回给你一个已登陆的内容。因此,需要验证码的情况可以使用带验证码登陆的cookie解。还有就有时候我们访问的网站需要完成一系列的指令,特别是加了代理,就需要同一个ip去完成这些指令,这时我们就需要通过设置随机数来解决。 关于随机数的一些设置我们可以分享给大家参考下,因为在访问目标网站过程中添加代理IP和随机数都是一起的,所以就把代理IP在爬虫程序里面的使用方式分享给大家交流学习下。 #! -- encoding:utf-8 -- import requests import random import requests.adapters
小白学大数据
2024/06/08
2390
python接口自动化40-盘点requests那些不常用(面试经常问)的高级技能
前言 如果面试问你如何用 python 发 get/post 请求? 这种问题只要是个小白花10分钟随便看下博客都能学得会。 面试官如果知道你是资深的,还是初级的呢?面试其实最喜欢考那些你不常用的功能
上海-悠悠
2021/03/03
6710
python接口自动化40-盘点requests那些不常用(面试经常问)的高级技能
python采集keep运动数据
我国2009年确立“全民健身日”;2012年,“广泛开展全民健身运动”写入十八大报告;到2014年上升为国家战略,全民健身的分量越来越重。推动全民健身和全民健康深度融合,通过全民健身实现全民健康。 全民健身运动在我国越来越普及,每天清晨和傍晚时分,城市的广场上、公园里,到处是运动健身的人们,跑步、打球、跳舞、游泳、打太极拳等运动项目十分丰富,人们在运动中获得越来越多的幸福感。 随之诞生出了很多运动app,例如keep,咪咕,微信等,大家可以通过app随时记录自己的运动数据,特别是对于很多的减肥人群来说,通过运动数据可以更好的让自己坚持下去。我身边就有很多的朋友使用kee使用keep来记录锻炼信息,想了解都有哪些群体使用keep这款健身软件,今天我们就使用python抓取些关于keep用户的跑步数据。 #! -- encoding:utf-8 -- import requests import random import requests.adapters # 要访问的目标页面 targetUrlList = [ “https://https://www.gotokeep.com”, “https://https://www.gotokeep.com//headers”, “https://hhttps://www.gotokeep.com//user-agent”, ] # 代理服务器(产品官网 www.16yun.cn) proxyHost = “t.16yun.cn” proxyPort = “31111” # 代理验证信息 proxyUser = “username” proxyPass = “password” proxyMeta = “http://%(user)s:%(pass)s@%(host)s:%(port)s” % { “host”: proxyHost, “port”: proxyPort, “user”: proxyUser, “pass”: proxyPass, } # 设置 http和https访问都是用HTTP代理 proxies = { “http”: proxyMeta, “https”: proxyMeta, } # 设置IP切换头 tunnel = random.randint(1, 10000) headers = {“Proxy-Tunnel”: str(tunnel)} class HTTPAdapter(requests.adapters.HTTPAdapter): def proxy_headers(self, proxy): headers = super(HTTPAdapter, self).proxy_headers(proxy) if hasattr(self, ‘tunnel’): headers[‘Proxy-Tunnel’] = self.tunnel return headers # 访问三次网站,使用相同的tunnel标志,均能够保持相同的外网IP for i in range(3): s = requests.session() a = HTTPAdapter() # 设置IP切换头 a.tunnel = tunnel s.mount(‘https://’, a) for url in targetUrlList: r = s.get(url, proxies=proxies) print r.text
小白学大数据
2024/06/08
3080
Nginx 强制跳转到HTTPS
因为使用IdentityServer4,所以也配置了HTTPS安全协议。 但是如果俩个都使用的话,一是不好区分,二是没有太多的必要, 所以就想着取消掉HTTP的访问,全部转向安全协议, 使用Nginx重写转发即可轻松实现。 直接看Nginx配置吧: server { listen 80; server_name ids.neters.club; rewrite ^(.*)$ https://$host$1 permanent;#把ht
老张的哲学
2022/04/11
7340
requests源码阅读
requests是一个简洁易用的http-client库,早期在github的python项目受欢迎程度可以排名TOP10。介绍这个项目,我个人觉得还是官方的地道: Requests is an elegant and simple HTTP library for Python, built for human beings. 夸张到是人类就会使用requests)。我们一起阅读一下其源码,学习它是如何实现的。整篇文档分下面几个部分:
仙人技术
2021/01/22
9600
python爬虫系列之Session相关知识
作为爬虫工作者,日常工作中常常遇到采集的页面限制我们的访问,尤其在频繁刷新或者访问一个页面时会引起网站的一些列反爬措施。网站的反爬措施有很多,今天我们就来谈谈 Session 和 cookie 的在python爬虫中的相关知识。
小白学大数据
2023/06/12
4360
隧道转发的爬虫代理随机数(2)
什么是隧道转发爬虫代理:“亿牛云爬虫代理IP”通过固定云代理服务地址,建立专线网络链接,代理平台自动实现毫秒级代理IP切换,保证了网络稳定性和速度,避免爬虫客户在代理IP策略优化上投入精力。
用户6172015
2021/03/24
4320
开源项目 requests 的 stars 为啥比 python 还多 3.7k?
结合上一篇文章《一次算法读图超时引起的urllib3源码分析》,我们学习了 urllib3 的基本语法、常见姿势和请求管理模式,以及PoolManager、HTTPConnectionPool、HTTPConnection等模块部分源码。对于学习 Python 的小伙伴来说,urllib3 强大的功能几乎能实现所有 HTTP 请求场景,但这就足够了吗?
程序员荒生
2022/03/15
8030
开源项目 requests 的 stars 为啥比 python 还多 3.7k?
SSL/TLS CipherSuite 介绍
本文是关于SSL/TLS的 CipherSuite 的信息摘录,翻译。如有疑问,欢迎指出。
byronhe
2021/06/25
7.1K0
自建 seafile pro 网盘
Seafile 是国产开源的一个自建网盘,作为网盘十分优越,客户端支持多平台,支持团队协作,可以在线编辑Office文件,最重要的是支持自行部署。
鹏程
2023/07/24
1.1K0
自建 seafile pro 网盘
为什么我强烈建议你使用ECC 证书
本文包含三部分内容:1)简单介绍 ECC 证书是什么;2)介绍如何申请 ECC 证书;3)以 Nginx 为例介绍如何使用 ECC 证书。
Bug开发工程师
2019/05/05
12K1
为什么我强烈建议你使用ECC 证书
HTTPS安全优化配置最佳实践指南简述
描述: 当下越来越多的网站管理员为企业站点或自己的站点进行了SSL/TLS配置, SSL/TLS 是一种简单易懂的技术,它很容易部署及运行,但要对其进行安全部署的情况下通常是不容易。
全栈工程师修炼指南
2022/09/29
2.9K0
HTTPS安全优化配置最佳实践指南简述
Python:requests:详解超时和重试
网络请求不可避免会遇上请求超时的情况,在 requests 中,如果不设置你的程序可能会永远失去响应。 超时又可分为连接超时和读取超时。
丹枫无迹
2019/01/22
5.9K0
相关推荐
一日一技: Python 如何突破反爬虫指纹 JA3
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验