爬虫 headless 访问 知道创宇 加速乐 CDN 网站

2024-08-31 20:48

本文主要是介绍爬虫 headless 访问 知道创宇 加速乐 CDN 网站,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

通过 requests.get 直接请求网站首页,返回 521 错误提示码,返回结果是js代码。这是采用加速乐反爬技术,在访问前先判断客户端的cookie是否正确,如果不正确,返回521状态码和一段js代码,并且进行set-cookie操作,返回的js代码经过浏览器执行又会生成新的cookie,这两个cookie一起发送给服务器,才会返回正确的网页内容
试了下代码demo如下,有cookie就带上访问,没有就计算访问

import execjs
from selenium import webdriver
from selenium.webdriver.chrome.options import Optionschrome_options = Options()
# 在启动Chromedriver之前,为Chrome开启实验性功能参数excludeSwitches,它的值为['enable-automation'],可应对WebDriver检测
chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])
chrome_options.add_argument('--headless')
# chrome_options.add_argument(pro1)
chrome_options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--no-sandbox')  # 取消沙盒模式
chrome_options.add_argument('--disable-setuid-sandbox')
# chrome_options.add_argument('--single-process') # 单进程运行
# chrome_options.add_argument('--process-per-tab') # 每个标签使用单独进程
# chrome_options.add_argument('--process-per-site') # 每个站点使用单独进程
# chrome_options.add_argument('--in-process-plugins') # 插件不启用单独进程
chrome_options.add_argument('--disable-popup-blocking') # 禁用弹出拦截
chrome_options.add_argument('--disable-images')  # 禁用图像
chrome_options.add_argument('--blink-settings=imagesEnabled=false')
chrome_options.add_argument('--incognito')  # 启动进入隐身模式
chrome_options.add_argument('--lang=zh-CN')  # 设置语言为简体中文
chrome_options.add_argument('--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36')
chrome_options.add_argument('--hide-scrollbars')
chrome_options.add_argument('--disable-bundled-ppapi-flash')
chrome_options.add_argument('--mute-audio')
chrome_options.add_argument('lang=zh_CN.UTF-8')
# chrome_options.add_extension(r'C:\lhcis\lh_spider_service\website_check\hdmbdioamgdkppmocchpkjhbpfmpjiei-3.0.1-Crx4Chrome.com.crx')
# chrome_options.add_argument('--disable-extensions')
# chrome_options.add_argument('--disable-plugins')
DRIVER = webdriver.Chrome(executable_path="C:\lhcis\lh_spider_service\website_check\chromedriver.exe",chrome_options=chrome_options)DRIVER.get("http://www.")
cookie_list= DRIVER.get_cookies()
cookie_value_dict = None
for i in cookie_list:if i.get('name') == '__jsl_clearance':cookie_value_dict = i
if cookie_value_dict:DRIVER.add_cookie(cookie_value_dict)DRIVER.get("http://www.")print(DRIVER.page_source)
if not cookie_value_dict:js_str = DRIVER.page_sourcejs_code1 = js_str.replace("<html><head>", "")js_code1 = js_code1.rstrip('\n')js_code1 = js_code1.replace('</script>', '')js_code1 = js_code1.replace('<script>', '')index = js_code1.rfind('}')js_code1 = js_code1[0:index + 1]js_code1 = 'function getCookie() {' + js_code1 + '}'js_code1 = js_code1.replace('eval', 'return')js_code2 = execjs.compile(js_code1)code = js_code2.call('getCookie')code = 'var a' + code.split('document.cookie')[1].split("Path=/;'")[0] + "Path=/;';return a;"code = 'window = {}; \n' + codejs_final = "function getClearance(){" + code + "};"ctx = execjs.compile(js_final)jsl_clearance = ctx.call('getClearance')jsl_cle = jsl_clearance.split(';')[0].split('=')[1]print(f'make cookie: {jsl_cle}')DRIVER.add_cookie({'name':'__jsl_clearance','value':jsl_cle})DRIVER.get("http://www.")print(DRIVER.page_source)
DRIVER.quit()

参考:https://segmentfault.com/a/1190000018713681

这篇关于爬虫 headless 访问 知道创宇 加速乐 CDN 网站的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1124951

相关文章

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

如何关闭Mac的Safari通知? 3招教你关闭Safari浏览器网站通知的技巧

《如何关闭Mac的Safari通知?3招教你关闭Safari浏览器网站通知的技巧》当我们在使用Mac电脑专注做一件事情的时候,总是会被一些消息推送通知所打扰,这时候,我们就希望关闭这些烦人的Mac通... Safari 浏览器的「通知」功能本意是为了方便用户及时获取最新资讯,但很容易被一些网站滥用,导致我们

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

NGINX 配置内网访问的实现步骤

《NGINX配置内网访问的实现步骤》本文主要介绍了NGINX配置内网访问的实现步骤,Nginx的geo模块限制域名访问权限,仅允许内网/办公室IP访问,具有一定的参考价值,感兴趣的可以了解一下... 目录需求1. geo 模块配置2. 访问控制判断3. 错误页面配置4. 一个完整的配置参考文档需求我们有一

C#实现访问远程硬盘的图文教程

《C#实现访问远程硬盘的图文教程》在现实场景中,我们经常用到远程桌面功能,而在某些场景下,我们需要使用类似的远程硬盘功能,这样能非常方便地操作对方电脑磁盘的目录、以及传送文件,这次我们将给出一个完整的... 目录引言一. 远程硬盘功能展示二. 远程硬盘代码实现1. 底层业务通信实现2. UI 实现三. De

python通过curl实现访问deepseek的API

《python通过curl实现访问deepseek的API》这篇文章主要为大家详细介绍了python如何通过curl实现访问deepseek的API,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编... API申请和充值下面是deepeek的API网站https://platform.deepsee

Nginx 访问 /root/下 403 Forbidden问题解决

《Nginx访问/root/下403Forbidden问题解决》在使用Nginx作为Web服务器时,可能会遇到403Forbidden错误,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录解决 Nginx 访问 /root/test/1.html 403 Forbidden 问题问题复现Ng

Gradle在国内配置镜像加速的实现步骤

《Gradle在国内配置镜像加速的实现步骤》在国内使用Gradle构建项目时,最大的痛点就是依赖下载贼慢,甚至卡死,下面教你如何配置国内镜像加速Gradle下载依赖,主要是通过改写repositori... 目录引言一、修改 build.gradle 或 settings.gradle 的 reposito

使用Dify访问mysql数据库详细代码示例

《使用Dify访问mysql数据库详细代码示例》:本文主要介绍使用Dify访问mysql数据库的相关资料,并详细讲解了如何在本地搭建数据库访问服务,使用ngrok暴露到公网,并创建知识库、数据库访... 1、在本地搭建数据库访问的服务,并使用ngrok暴露到公网。#sql_tools.pyfrom