Cloudscraper returns AttributeError: 'SSLContext' object has no attribute 'orig_wrap_socket'

回答 1 浏览 1880 2022-03-20
import cloudscraper
import requests

scraper = cloudscraper.create_scraper()  # returns a CloudScraper instance
# Or: scraper = cloudscraper.CloudScraper()  # CloudScraper inherits from requests.Session
print (scraper.get("https://www.youtube.com/").text )

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-459-1f19dc044105> in <module>
      2 import requests
      3 
----> 4 scraper = cloudscraper.create_scraper()  # returns a CloudScraper instance
      5 # Or: scraper = cloudscraper.CloudScraper()  # CloudScraper inherits from requests.Session
      6 print (scraper.get("https://www.youtube.com/").text )

~/.local/lib/python3.6/site-packages/cloudscraper/__init__.py in create_scraper(cls, sess, **kwargs)
    315         Convenience function for creating a ready-to-go CloudScraper object.
    316         
--> 317         scraper = cls(**kwargs)
    318 
    319         if sess:

~/.local/lib/python3.6/site-packages/cloudscraper/__init__.py in __init__(self, *args, **kwargs)
    169                 server_hostname=self.server_hostname,
    170                 source_address=self.source_address,
--> 171                 ssl_context=self.ssl_context
    172             )
    173         )

~/.local/lib/python3.6/site-packages/cloudscraper/__init__.py in __init__(self, *args, **kwargs)
     75             self.ssl_context = ssl.create_default_context(ssl.Purpose.SERVER_AUTH)
     76 
---> 77             self.ssl_context.orig_wrap_socket = self.ssl_context.wrap_socket
     78             self.ssl_context.wrap_socket = self.wrap_socket
     79 

AttributeError: 'SSLContext' object has no attribute 'orig_wrap_socket'

根据https://pypi.org/project/cloudscraper/上的文档运行了代码,我找不到关于如何解决这个错误信息的相关支持信息。

Rivered 提问于2022-03-20
请确保以下软件包是最新的。Requests >= 2.9.2 Requests_toolbelt >= 0.9.1 如这里所描述的 pypi.org/project/cloudscraper 在依赖项下。我希望这有帮助Eiri 2022-03-21
@Eiri, 不幸的是,更新软件包并没有积极的效果,同样的错误信息依然存在。Rivered 2022-03-21
你能不能尝试使用python3.7Eiri 2022-03-22
@Eiri, 很遗憾,我的pipenv在python3.7上失败了。但在Python3.6上得到了同样的错误,在Python3.8上工作得很好。Ikar Pohorský 2022-03-24
我可以确认Python 3.8可以工作,绕过了cloudflare :)Rivered 2022-03-24
1 个回答
#1楼 已采纳
得票数 7

我的脚本在12天前发布的最新版本1.2.60之前一直运行良好。也许是python3.6中的旧库ssl.py的问题。

这是我的暂时性解决方案。

  • 使用最后的版本1.2.58pip3 install cloudscraper==1.2.58
  • 或使用Python 3.7+,经测试可在Python 3.7下工作。
ben_29 提问于2022-03-27