反爬虫01

1、python-requests/2.18.4

  • 很多的爬虫请求头就是默认的一些很明显的爬虫头python-requests/2.18.4,诸如此类,当运维人员发现携带有这类headers的数据包,直接拒绝访问,返回403错误
  • 解决方法:
    r=requests.get(url,headers={'User-Agent':'Baiduspider'})
    把爬虫请求headers伪装成百度爬虫或者其他浏览器头就行了。
    案例:雪球网

2、BAN cookies

  • 服务器对每一个访问网页的人都set-cookie,给其一个cookies,当该cookies访问超过某一个阀值时就BAN掉该COOKIE,过一段时间再放出来,当然一般爬虫都是不带COOKIE进行访问的,可是网页上有一部分内容如新浪微博是需要用户登录才能查看更多内容。
  • 解决办法:
    控制访问速度,或者某些需要登录的如新浪微博,在某宝上买多个账号,生成多个cookies,在每一次访问时带上cookies
    案例:蚂蜂窝

3、 验证码验证

  • 当某一用户访问次数过多后,就自动让请求跳转到一个验证码页面,只有在输入正确的验证码之后才能继续访问网站
  • 解决办法:
    python可以通过一些 第三方库如(pytesser,PIL) 来对验证码进行处理,识别出正确的验证码,复杂的验证码可以通过机器学习让爬虫自动识别复杂验证码,让程序自动识别验证码并自动输入验证码继续抓取

5. javascript渲染

  • 网页开发者将重要信息放在网页中但不写入html标签中,而浏览器会自动渲染 < script >标签中的js代码将信息展现在浏览器当中,而爬虫是不具备执行js代码的能力,所以无法将js事件产生的信息读取出来
  • 解决办法:
    通过分析提取script中的js代码来通过正则匹配提取信息内容或通过webdriver+phantomjs直接进行无头浏览器渲染网页。
  • 案例:
    前程无忧网随便打开一个前程无忧工作界面,直接用requests.get对其进行访问,可以得到一页的20个左右数据,显然得到的不全,而用webdriver访问同样的页面可以得到50个完整的工作信息。

6. ajax异步传输

  • 访问网页的时候服务器将网页框架返回给客户端,在与客户端交互的过程中通过异步ajax技术传输数据包到客户端,呈现在网页上,爬虫直接抓取的话信息为空
  • 解决办法:
    通过fiddler或是wireshark抓包分析ajax请求的界面,然后自己通过规律仿造服务器构造一个请求访问服务器得到返回的真实数据包。
  • 案例:
    拉勾网打开拉勾网的某一个工作招聘页,可以看到许许多多的招聘信息数据,点击下一页后发现页面框架不变化,url地址不变,而其中的每个招聘数据发生了变化,通过chrome开发者工具抓包找到了一个叫请求了一个叫做
    https://www.lagou.com/zhaopin/Java/2/?filterOption=3
    的网页,打开改网页发现为第二页真正的数据源,通过仿造请求可以抓取每一页的数据。很多网页的运维者通过组合以上几种手段,然后形成一套反爬策略,就像之前碰到过一个复杂网络传输+加速乐+cookies时效的反爬手段。

7、加速乐:

  • 有些网站使用了加速乐的服务,在访问之前先判断客户端的cookie正不正确。如果不正确,返回521状态码,set-cookie并且返回一段js代码通过浏览器执行后又可以生成一个cookie,只有这两个cookie一起发送给服务器,才会返回正确的网页内容。
  • 解决办法:
    将浏览器返回的js代码放在一个字符串中,然后利用nodejs对这段代码进行反压缩,然后对局部的信息进行解密,得到关键信息放入下一次访问请求的头部中。
    案例:加速乐

解析URL中的参数

在GET请求的时候,经常会有很多查询参数接在URL后面,形如http://xlzd.me/query?name=xlzd&&lang=python,在拼接URL的时候常常容易出现拼接错误的情况,对此你可以使用如下代码让这个过程变得简洁明了:

r = requests.get("http://xlzd.me/query",
	 params={"name":"xlzd", "lang": "python"})

print r.url

输出结果:
http://xlzd.me/query?name=xlzd&&lang=python

获取响应内容

In [7]: r = requests.get('http://xlzd.me')

In [8]: r.encoding
Out[8]: 'UTF-8'

In [9]: r.headers
Out[9]: {'Content-Encoding': 'gzip', 'Transfer-Encoding': 'chunked', 'Vary': 'Accept-Encoding', 'Server': 'nginx', 'Connection': 'keep-alive', 'Date': 'Fri, 11 Dec 2015 06:42:31 GMT', 'Content-Type': 'text/html; charset=UTF-8', 'X-Pingback': 'http://xlzd.me/action/xmlrpc'}

In [10]: r.cookies
Out[10]: <RequestsCookieJar[]>

In [11]: r.text
Out[11]: u'<!DOCTYPE HTML>\n<html lang="zh-CN">\n\t<hea......

最常见的模拟浏览器无非就是伪装headers

In [23]: url = 'http://xlzd.me'

In [24]: headers = {'User-Agent': 'my custom user agent', 'Cookie': 'haha'}

In [25]: requests.get(url, headers=headers)

套代理

import requests

proxies = {
  "http": "http://192.168.31.1:3128",
  "https": "http://10.10.1.10:1080",
}

requests.get("http://xlzd.me", proxies=proxies)
AI 代码审查Review工具 是一个旨在自动化代码审查流程的工具。它通过集成版本控制系统(如 GitHub 和 GitLab)的 Webhook,利用大型语言模型(LLM)对代码变更进行分析,并将审查意见反馈到相应的 Pull Request 或 Merge Request 中。此外,它还支持将审查结果通知到企业微信等通讯工具。 一个基于 LLM 的自动化代码审查助手。通过 GitHub/GitLab Webhook 监听 PR/MR 变更,调用 AI 分析代码,并将审查意见自动评论到 PR/MR,同时支持多种通知渠道。 主要功能 多平台支持: 集成 GitHub 和 GitLab Webhook,监听 Pull Request / Merge Request 事件。 智能审查模式: 详细审查 (/github_webhook, /gitlab_webhook): AI 对每个变更文件进行分析,旨在找出具体问题。审查意见会以结构化的形式(例如,定位到特定代码行、问题分类、严重程度、分析和建议)逐条评论到 PR/MR。AI 模型会输出 JSON 格式的分析结果,系统再将其转换为多条独立的评论。 通用审查 (/github_webhook_general, /gitlab_webhook_general): AI 对每个变更文件进行整体性分析,并为每个文件生成一个 Markdown 格式的总结性评论。 自动化流程: 自动将 AI 审查意见(详细模式下为多条,通用模式下为每个文件一条)发布到 PR/MR。 在所有文件审查完毕后,自动在 PR/MR 中发布一条总结性评论。 即便 AI 未发现任何值得报告的问题,也会发布相应的友好提示和总结评论。 异步处理审查任务,快速响应 Webhook。 通过 Redis 防止对同一 Commit 的重复审查。 灵活配置: 通过环境变量设置基
【直流微电网】径向直流微电网的状态空间建模与线性化:一种耦合DC-DC变换器状态空间平均模型的方法 (Matlab代码实现)内容概要:本文介绍了径向直流微电网的状态空间建模与线性化方法,重点提出了一种基于耦合DC-DC变换器的状态空间平均模型的建模策略。该方法通过数学建模手段对直流微电网系统进行精确的状态空间描述,并对其进行线性化处理,以便于系统稳定性分析与控制器设计。文中结合Matlab代码实现,展示了建模与仿真过程,有助于研究人员理解和复现相关技术,推动直流微电网系统的动态性能研究与工程应用。; 适合人群:具备电力电子、电力系统或自动化等相关背景,熟悉Matlab/Simulink仿真工具,从事新能源、微电网或智能电网研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握直流微电网的动态建模方法;②学习DC-DC变换器在耦合条件下的状态空间平均建模技巧;③实现系统的线性化分析并支持后续控制器设计(如电压稳定控制、功率分配等);④为科研论文撰写、项目仿真验证提供技术支持与代码参考。; 阅读建议:建议读者结合Matlab代码逐步实践建模流程,重点关注状态变量选取、平均化处理和线性化推导过程,同时可扩展应用于更复杂的直流微电网拓扑结构中,提升系统分析与设计能力。
内容概要:本文介绍了基于物PINN驱动的三维声波波动方程求解(Matlab代码实现)理信息神经网络(PINN)求解三维声波波动方程的Matlab代码实现方法,展示了如何利用PINN技术在无需大量标注数据的情况下,结合物理定律约束进行偏微分方程的数值求解。该方法将神经网络与物理方程深度融合,适用于复杂波动问题的建模与仿真,并提供了完整的Matlab实现方案,便于科研人员理解和复现。此外,文档还列举了多个相关科研方向和技术服务内容,涵盖智能优化算法、机器学习、信号处理、电力系统等多个领域,突出其在科研仿真中的广泛应用价值。; 适合人群:具备一定数学建模基础和Matlab编程能力的研究生、科研人员及工程技术人员,尤其适合从事计算物理、声学仿真、偏微分方程数值解等相关领域的研究人员; 使用场景及目标:①学习并掌握PINN在求解三维声波波动方程中的应用原理与实现方式;②拓展至其他物理系统的建模与仿真,如电磁场、热传导、流体力学等问题;③为科研项目提供可复用的代码框架和技术支持参考; 阅读建议:建议读者结合文中提供的网盘资源下载完整代码,按照目录顺序逐步学习,重点关注PINN网络结构设计、损失函数构建及物理边界条件的嵌入方法,同时可借鉴其他案例提升综合仿真能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值