过cloudflare,使用cfscrape,以及cfscrape挂代理的方式

该博客介绍了如何使用Python模块`cfscrape`来绕过Cloudflare的反爬机制,支持Python2.6到3.7版本。示例代码展示了基本的访问方式以及结合代理进行访问的方法。通过获取并设置代理IP,然后利用`cfscrape`创建带延迟的 scraper 对象进行请求。在成功访问后,从响应中提取特定信息。博客还提供了访问失败的判断及相应处理。
摘要由CSDN通过智能技术生成

一个简单的python模块,可以绕过cloudflare的反bot页面(也称为"我处于攻击模式"或iuam),它通过请求实现。支持Python2.6-3.7版本。

PS:下面所有运行环境都是在外网的服务器上

只需运行
pip install cfscrape。
您可以使用
pip install-u cfscrap进行升级。
pypi包位于 https://pypi.python.org/pypi/cfscrape/
github https://github.com/Anorov/cloudflare-scrape

#基础访问类型
import cfscrape
from parsel import Selector
import requests
session = cfscrape.create_scraper(delay=10)
response = session.get(url)

下面是挂代理的方式,代理需要在可访问外网的服务器上才可以进行,并且需要将服务器加入白名单。

注册个人或者公司认证后有测试量,可以进行免费测试
注册地址,打开注册

import cfscrape
from parsel import Selector
import requests

response = requests.get("http://tiqu.linksocket.com:81/abroad?num=1&type=2&lb=1&sb=0&flow=1&regions=&port=1&n=0")
ip = response.json()["data"][0]["ip"]
port = response.json()["data"][0]["port"]

ip = "{}:{}".format(ip, port)
proxies = {
    "http": "http://{}".format(ip),
    "https": "https://{}".format(ip),
}

ttt = requests.get("http://myip.top", proxies=proxies)
print(ttt.text)

ssss = cfscrape.create_scraper(delay=10)
cookies,user_agent= ssss.get_cookie_string("https://apkpure.com/", proxies=proxies, allow_redirects=True)

response = ssss.get("https://apkpure.com/cn/search?q=com.facebook.katana",proxies=proxies)
# # print(web_data)
if "开发者" in response.text:
    print("访问成功")
    down_html = Selector(text=response.text)
    info_url_list = down_html.css("div#search-res dd")
    for down_html in info_url_list:
        apk_name = down_html.css("p.search-title>a::text").extract_first()
        print(apk_name)
        print("=============")
else:
    print(response.text)
    print("访问失败")

如果能对你有帮助,是我的荣幸。谢谢。
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
使用 PHP 进行网络爬虫活动时,经常需要使用代理 IP 地址来绕过限制,特别是针对使用Cloudflare 的网站。当我们访问这些网站时,它们会强制使用 JavaScript 验证和反爬虫技术,从而阻止爬虫活动。这时候就需要使用代理 IP 地址来隐藏真实 IP,并绕过限制。 PHP 的 curl 和 file_get_contents 是两种常用的实现方式。下面分别介绍: 1. 使用 curl 绕过 limit using file_get_contents 伪造一个 User-Agent http header 以骗过 Cloudflare,同时使用代理来隐藏真实 IP 地址。下面是代码: ``` $url = 'https://www.xxx.com/'; $proxy = 'socks5://127.0.0.1:1080'; // 设置代理 $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); curl_setopt($ch,CURLOPT_PROXY,$proxy); // 设置代理 curl_setopt($ch,CURLOPT_HTTPHEADER,array( 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36' )); curl_setopt($ch,CURLOPT_HEADER,false); curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true); curl_setopt($ch,CURLOPT_NOBODY,false); $data = curl_exec($ch); curl_close($ch); echo $data; ``` 2. 使用 file_get_contents 绕过 limit 使用 file_get_contents 做简单的 HTTP GET 请求时,我们可以使用 stream_context_set_default() 函数强制指定 HTTP 请求头, 然后使用透明代理,实现隐藏真实 IP 地址。下面是代码: ``` $url = 'https://www.xxx.com/'; $context = stream_context_create( array( 'http'=>array( 'proxy'=>'tcp://127.0.0.1:1080', // 设置代理 'request_fulluri'=>true, 'header'=>"User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36\r\n" ) ) ); $data = file_get_contents($url,false,$context); echo $data; ``` 需要注意的是,这种方式在对付一些简易的反爬虫技术时比较有用,但是如果网站使用了更高级的限制技术(如验证码、JS 加密等),我们需要采用更复杂的解决方案。最好的解决办法是建立一个合理的程序架构来控制和维护网络爬虫的正常运行。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值