当前位置: 首页 > wzjs >正文

南阳+网站建设义乌企业网站搭建首选

南阳+网站建设,义乌企业网站搭建首选,男做暧免费视频网站,那曲做网站在现代网络爬虫和自动化任务中,动态生成的参数(如 Referer 和 Sign)常常是绕过反爬虫机制的关键。本文将详细介绍如何使用 Python 的 Selenium 和 Requests 库,从目标网页中提取动态 Referer 和 Sign,并完成后续的请求…

在现代网络爬虫和自动化任务中,动态生成的参数(如 Referer 和 Sign)常常是绕过反爬虫机制的关键。本文将详细介绍如何使用 Python 的 Selenium 和 Requests 库,从目标网页中提取动态 Referer 和 Sign,并完成后续的请求和解密操作。


1. 背景介绍

1.1 什么是动态 Referer 和 Sign

  • Referer:HTTP 请求头的一部分,用于指示请求是从哪个页面发起的。某些网站会检查 Referer 是否合法,以防止跨站请求伪造(CSRF)或未经授权的访问。

  • Sign:一种动态生成的参数,通常用于验证请求的合法性。Sign 可能是通过 JavaScript 动态生成的,或者基于某种规则(如时间戳、随机数等)生成。

1.2 为什么需要动态获取这些参数?

  • 反爬虫机制:许多网站会使用动态参数来防止自动化脚本的访问。

  • 请求合法性:某些 API 或接口要求提供正确的 Referer 和 Sign,否则会返回错误。


2. 实现思路

我们的目标是:

  1. 使用 Selenium 打开目标网页,提取动态 Referer

  2. 从页面中提取动态 Sign

  3. 使用 Requests 发送请求,获取加密的 URL。

  4. 使用 Selenium 执行 JavaScript 解密逻辑,获取最终的 URL。


3. 实现步骤

3.1 安装依赖

首先,确保安装了以下 Python 库:

pip install requests selenium beautifulsoup4

3.2 提取动态 Referer

我们使用 Selenium 打开目标网页,并通过 BeautifulSoup 解析页面内容,提取 iframe 的 src 属性作为 Referer

from selenium import webdriver
from bs4 import BeautifulSoup
import requestsdef get_dynamic_referer():# 初始化浏览器driver = webdriver.Edge()  # 使用 Edge 浏览器driver.get("https://wwou.lanzoue.com/ib7ll2dcgiqd")  # 打开目标页面# 等待页面加载time.sleep(5)# 使用 BeautifulSoup 解析页面url = "https://wwou.lanzoue.com/ib7ll2dcgiqd"response = requests.get(url)soup = BeautifulSoup(response.text, "html.parser")# 查找 iframe 标签iframe = soup.find("iframe", class_="ifr2")if iframe and iframe.has_attr("src"):src = iframe["src"]referer = "https://wwou.lanzoue.com" + srcprint("提取到的 Referer:", referer)else:# 如果未找到 iframe,使用 Selenium 动态加载iframe = driver.find_element(By.CSS_SELECTOR, "iframe.ifr2")src = iframe.get_attribute("src")referer = "https://wwou.lanzoue.com" + srcprint("提取到的 Referer:", referer)driver.quit()  # 关闭浏览器return referer

3.3 提取动态 Sign

从页面中提取 Sign,通常需要分析 JavaScript 代码或页面元素。我们可以使用正则表达式从 script 标签中提取 Sign

import redef extract_sign(referer):response = requests.get(referer)soup = BeautifulSoup(response.text, "html.parser")# 查找所有 script 标签scripts = soup.find_all("script", type="text/javascript")# 遍历 script 标签,查找 signsign = Nonefor script in scripts:if script.string and "'sign':" in script.string:match = re.search(r"'sign':'([^']+)'", script.string)if match:sign = match.group(1)breakif sign:print("提取到的 Sign:", sign)else:print("未找到 Sign")return sign

3.4 发送请求并获取加密 URL

使用提取到的 Referer 和 Sign,构造请求并发送。

def send_request(referer, sign):api_url = "https://wwou.lanzoue.com/ajaxm.php?file=205542423"payload = {"action": "downprocess","signs": "?ctdf","sign": sign,  # 使用动态 Sign"websign": "","websignkey": "VoaW","ves": 1,"kd": 1}headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36","Referer": referer,  # 使用动态 Referer"Content-Type": "application/x-www-form-urlencoded"}response = requests.post(api_url, data=payload, headers=headers)return response

3.5 解密 URL

如果返回的 URL 是加密的,可以使用 Selenium 执行 JavaScript 解密逻辑。

def decrypt_url(encrypted_url):driver = webdriver.Edge()  # 使用 Edge 浏览器driver.get("about:blank")  # 打开空白页# 注入解密逻辑(替换为实际逻辑)driver.execute_script("""window.decryptFunction = function(encryptedUrl) {// 示例解密逻辑(替换为实际逻辑)return encryptedUrl.replace("encrypted_", "decrypted_");};""")# 调用解密函数decrypted_url = driver.execute_script(f"""return decryptFunction("{encrypted_url}");""")driver.quit()  # 关闭浏览器return decrypted_url

3.6 主逻辑

将以上步骤整合到主逻辑中。

try:# 获取动态 Refererreferer = get_dynamic_referer()print("Dynamic Referer:", referer)if not referer:raise ValueError("Failed to get dynamic Referer.")# 提取动态 Signsign = extract_sign(referer)if not sign:raise ValueError("Failed to extract Sign.")# 发送请求response = send_request(referer, sign)print("Status Code:", response.status_code)print("Response Content:", response.text)# 解析响应try:data = response.json()if data.get("zt") == 1 and data.get("url"):  # 检查状态和 URLencrypted_url = data["url"]print("Encrypted URL:", encrypted_url)# 解密 URLdecrypted_url = decrypt_url("https://developer-oss.lanrar.com/file/" + encrypted_url)print("Decrypted URL:", decrypted_url)else:print("Failed to get a valid URL. Error:", data.get("inf"))except requests.exceptions.JSONDecodeError:print("Failed to decode JSON. Response content:")print(response.text)
except Exception as e:print("An error occurred:", str(e))

4. 总结

通过本文的代码示例,你可以:

  1. 使用 Selenium 和 BeautifulSoup 提取动态 Referer 和 Sign

  2. 使用 Requests 发送请求并获取加密 URL。

  3. 使用 Selenium 执行 JavaScript 解密逻辑。

这种方法适用于需要处理动态参数的自动化任务,如爬虫、数据抓取等。如果你有更多问题或需要进一步的帮助,请随时联系我!


文章转载自:

http://eZRC4pBS.dmtLd.cn
http://Bp4k5vpw.dmtLd.cn
http://4TYHRMJa.dmtLd.cn
http://g8oUBzys.dmtLd.cn
http://eaPrhxLy.dmtLd.cn
http://v6aucAVE.dmtLd.cn
http://sRdel39t.dmtLd.cn
http://nduPnynd.dmtLd.cn
http://O55FNWP2.dmtLd.cn
http://UWJZ19p3.dmtLd.cn
http://44TqOPxR.dmtLd.cn
http://s1hDPgBP.dmtLd.cn
http://YirRewGF.dmtLd.cn
http://sIszkPJX.dmtLd.cn
http://rchTUAx6.dmtLd.cn
http://BzeyFVPI.dmtLd.cn
http://hvRPLrSs.dmtLd.cn
http://g3K8FfUV.dmtLd.cn
http://Kg0kuSUT.dmtLd.cn
http://Si3btS3B.dmtLd.cn
http://LM8O5bFN.dmtLd.cn
http://BSrCeJH1.dmtLd.cn
http://ohGFIJq0.dmtLd.cn
http://24vekEcC.dmtLd.cn
http://VMoe4782.dmtLd.cn
http://xt6WwBok.dmtLd.cn
http://s0go5ge5.dmtLd.cn
http://GhTjUkPU.dmtLd.cn
http://TWHasVHR.dmtLd.cn
http://SJ4AQ82H.dmtLd.cn
http://www.dtcms.com/wzjs/762494.html

相关文章:

  • 石家庄市工程建设造价管理站网站建设部网站 规范下载
  • 郑州o2o网站建设汉狮中国建设银行官网站和字币预约
  • 网站开发工具简介企业做国外网站多少钱
  • 合肥网站建设网站开源企业建站系统哪个好
  • 站群管理软件移动互联网论文
  • express做静态网站关于建网站做淘宝联盟
  • wordpress 筛选 文章网站优化怎么做分录
  • 珠海网站建设王道下拉強服装设计公司属于什么行业类型
  • 初期网站开发费会计分录宁波seo教学
  • 个人网站名称 备案建设网站是什么科目
  • 秦皇岛网站制作源码php淘宝商城网站源码
  • wordpress公司展示网站杭州网站如何制作
  • 东莞做网站dgjcwl搜索引擎大全
  • 巩义网站公司广州科 外贸网站建设
  • 车陂网站建设网红营销概念
  • 西峡网站开发24手表网站
  • 做电商网站需要做什么准备新乡网站建设开发
  • 公司网站主页打不开购买一个小程序多少钱
  • 我的网站搜索不到了奢侈品网站建设方案
  • 网站seo查询建设系统网站
  • 网站建设系统 招标网站开发流程表
  • 做静态网站的开题报告企业查天眼查官网
  • 哪里有网站制作多用户商城数据库设计
  • 如何用电脑做网站服务器创意设计网站推荐
  • 滕州网站建设推广帝国cms这么做网站
  • 沧州英文模板建站鲁班设计工作平台
  • 网站推广公司 wordpress网络电话免费版
  • 深圳网站建设 龙华信科黑蜘蛛网站
  • 浏览wap网站制作免费个人网页
  • 网站如何做线上和线下推广南昌做seo的公司有哪些