1、第一种方式使用cloudscraper绕过

import cloudscraper

# 创建一个Cloudscraper实例,设置延迟和模拟的浏览器环境

scraper = cloudscraper.create_scraper(delay=5, browser={

'browser': 'chrome',

'platform': 'linux',

'mobile': False,

})

resp = scraper.get('https://toppsta.com/books/series/29278/national-geographic-kids-readers-level-1',

# proxies={'http': 'http://127.0.0.1:10809', 'https': 'http://127.0.0.1:10809'}

)

## 打印响应的文本和状态码

print(resp.text)

print(resp.status_code)

2、第二种方式使用curl_cffi绕过

from curl_cffi import requests as cffi_requests

res = cffi_requests.get('https://toppsta.com/books/series/29278/national-geographic-kids-readers-level-1', impersonate='chrome110', timeout=10)

print(res.text)

print(res.status_code)

3、第三种方式通过DrissionPage自动化库绕过

# 过五秒盾反爬

from DrissionPage import ChromiumPage, ChromiumOptions

import platform

from loguru import logger

if platform.system().lower() == 'windows':

co = ChromiumOptions().set_paths(browser_path=r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe")

value = '确认您是真人'

else:

co = ChromiumOptions().set_paths(browser_path=r"/opt/google/chrome/google-chrome")

value = 'Verify you are human'

co.headless(True) # 设置无头加载 无头模式是一种在浏览器没有界面的情况下运行的模式,它可以提高浏览器的性能和加载速度

co.incognito(True) # 无痕隐身模式打开的话,不会记住你的网站账号密码的

co.set_argument('--no-sandbox') # 禁用沙箱 禁用沙箱可以避免浏览器在加载页面时进行安全检查,从而提高加载速度 默认情况下,所有Chrome 用户都启用了隐私沙盒选项 https://zhuanlan.zhihu.com/p/475639754

co.set_argument("--disable-gpu") # 禁用GPU加速可以避免浏览器在加载页面时使用过多的计算资源,从而提高加载速度

co.set_user_agent(user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36') # 设置ua

browser = ChromiumPage(co) # 创建对象

browser.set.window.max()

browser.get("https://cn.airbusan.com/content/common/customercenter/noticeList", retry=3, interval=2, timeout=15) # 访问网

logger.info(f"user_agent is {browser.user_agent}")

browser.wait(2)

for i in range(20):

if browser.ele(f'x://input[@value="{value}"]', timeout=3):

logger.warning(f"retry {i+1} times, Verify you are human click now")

browser.ele(f'x://input[@value="{value}"]').click()

browser.wait(2)

if not browser.cookies(as_dict=True).get('cf_clearance'):

logger.error(f"retry {i+1} times, browser_cookie is {browser.cookies(as_dict=True)}")

continue

else:

logger.success(f"retry {i+1} times, browser_cookie is {browser.cookies(as_dict=True)}")

break

# with open(r"./ccc.html", "w") as f:

# f.write(browser.html)

browser.wait(2)

browser.wait.ele_displayed('x://td[@class="subject"]/a', timeout=3)

for tr in browser.eles('x://div[@class="boardList mgt60"]//tr', timeout=3)[1:]:

tds = [td.text for td in tr.eles("x://td", timeout=3)]

detail_url = tr.ele('x://td[@class="subject"]/a').attr('href')

logger.info(f"list_page_company is {tds} , a_href is {detail_url}")

# 对整页截图并保存

# browser.get_screenshot(path=r'./headless_False.png', full_page=True)

browser.get_screenshot(path=r'./headless_True.png', full_page=True)

browser.quit()

4、使用开源项目CloudFlare5sBypass

CloudFlare5sBypass

相关文章链接:https://mp.weixin.qq.com/s/NZej8tbY6Hau6STH_xmYsQ