Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >简单介绍区块链技术

简单介绍区块链技术

作者头像
Jinjin
发布于 2018-03-12 08:05:51
发布于 2018-03-12 08:05:51
3.8K0
举报

重要提示:如果你拥有价值超过1000美元的加密货币,那么你肯定应该使用硬件钱包,而不是在交易所保留硬币。 我推荐使用Trezor,你可以直接从他们的网站花费€89购买。

这篇文章是对区块链技术的简单介绍,并假定最少的技术知识。这篇文章试图描述区块链技术是什么而不是为什么我应该关心,这是未来的职位。

这里有几篇对比的简短文章:

你想要使用区块链用在某些地方上吗?一些常见的误解

区块链困惑? 革命与进化

不,区块链不是寻找问题的解决方案

区块链不变性的简单介绍

第1部分 - 执行摘要

人们使用术语“区块链技术”来表示不同的东西,这可能会让人困惑。有时他们谈论的是比特币区块链,有时候是以太坊区块链,有时候是其他虚拟货币或数字代币,有时候是智能合约。大多数情况下,他们都在谈论分布式账本,即跨多台计算机复制的交易列表,而不是存储在中央服务器上。

常见的主题似乎是一个数据存储

  • 通常包含金融交易
  • 几乎实时地多个系统复制
  • 通常存在于对等网络之上
  • 使用密码学数字签名来证明身份,真实性和强制读/写访问权限
  • 可以由某些参与者编写
  • 可以被某些参与者阅读,也可以被更广泛的读者阅读,而且
  • 存在某种机制使其很难改变历史记录,或者至少当有人试图这样做时可以很容易地检测到

我将“区块链技术”视为许多技术的集合,有点像一袋乐高。从袋子里,你可以拿出不同的砖块,并以不同的方式放在一起,创造出不同的结果。

我将区块链技术看做一袋乐高或砖块
我将区块链技术看做一袋乐高或砖块

区块链和普通数据库有什么区别?非常松散的是,区块链系统是一个包含普通数据库和一些软件的软件包,这些软件可以添加新节点,验证新节点是否符合预先约定的规则,侦听并通过网络向相邻节点广播新节点,从而确保所有节点的数据库中有相同的数据。

第2部分 - 比特币下的区块链

比特币区块链生态系统

作为比特币的入门,它可能有助于回顾比特币简单介绍

比特币区块链生态系统实际上是一个相当复杂的系统,因为它具有双重目标:任何人都应该能够写入比特币区块链; 而且不应该有任何集权的权力或控制权。放心,你不需要了解比特币的很多复杂机制。

也就是说,让我们从比特币区块链生态系统开始,然后尝试从比特币位中挑出区块

复制的数据库。 比特币区块链生态系统行为形似复制数据库网络,每个数据库都包含比特币交易的相同历史列表。网络的重要成员被称为验证者或节点,它们传递事务数据(支付)和块数据(添加到分类账)。每个节点独立检查支付数据和传递的数据块。有一些规则可以使网络按预期运行。

比特币的复杂性来自其意识形态。比特币的目标是去中心化,即没有控制中心,而且是相对匿名的。这影响了比特币一直以来的发展。并不是所有的区块链生态系统都需要有相同的机制,特别是如果参与者可以被识别和信任的行为。

以下是比特币如何处理一些决定:

公共vs私有区块链

根据你是否允许任何人写入你的区块链或允许已知的经过审核的参与者写入你的区块链,你所需要的技术有很大差异。在理论上比特币允许任何人写入账本(但在实践中,实际上只有大约20人/组这么做)。

公共链。 账本是两种意义上的“公开”:

  1. 任何人,未经任何节点允许,都可以写入数据
  2. 任何人,未经任何节点允许,都可以阅读数据

通常,当人们谈论公共区块链时,他们指的是任何人都可以写入数据。

因为比特币被设计成“任何人都可以编写”的区块链,参与者没有经过审查就可以在不需要批准的情况下添加到账本中,它所需要的是仲裁差异的方法(没有“老板”来决定)和抵抗袭击的防御机制(如果有财政动机的话,任何人都可能因有罪不罚而行为不端)。这些都给运行区块链增加了成本以及复杂度。

私有链。 相反,“私有”区块链网络是参与者都知道和信任的地方:例如,一个行业组织,或者具体点说雨伞行业的几家公司组成的团体。他们不需要很多机制- 或者说它们被合法合同取代 - “你会因为你签署了这张纸而表现出色。” 这改变了用哪块“砖”解决问题的技术决策。

描述公共/私有区块链的另一种方式是不被允许的参与者/被允许或者匿名的参与者/被识别的参与者。

有关此主题的更多信息,请参阅内部区块链的优缺点分布式账本和区块链之间的区别

第3部分 - 深入了解区块链


警告:这部分内容并不那么简单,因为它详细描述了上述每个术语。我建议喝杯茶。

数据存储:什么是区块链?

区块链只是一个文件。 区块链本身就是一种数据结构。也就是说,数据是如何逻辑地放在一起并存储的。其他数据结构是数据库(行,列,表),文本文件,逗号分隔值(csv),图像,列表等等这些。你可以认为与数据库竞争最为密切的是区块链。

链中的块=书中的页面 为了比喻,一本书是一连串的页面。书中的每个页面都包含:

  • 文字:例如故事
  • 关于书中的信息:在页面的顶部通常有书的标题,有时是章节号或标题; 页面底部通常是页码,告诉你书中的位置。这个'关于数据的数据'被称为元数据。

同样在区块链中,每个区块都有:

  • 该块的内容,比如在比特币中,是比特币交易信息,还有矿工激励奖励(目前是25 BTC)。
  • '头部'包含区块的数据信息。在比特币中,头部包含有关块的一些技术信息,对前一块的引用信息,以及包含在该块中的数据的指纹(哈希或散列)等等。这个哈希对于排序非常重要。(译者注:hash 值在应用中又被称为指纹(fingerprint)、摘要(digest)
链中的块指向前一个块,如同书中的页码表示
链中的块指向前一个块,如同书中的页码表示

查看此图表,了解比特币区块链中的数据可视化

区块链中的块排序

逐页。 通过书籍,可预测的页码可以轻松了解页面的顺序。如果你撕掉了所有的页面并对它们进行了拖拽,那么很容易将它们放回到使故事有意义的正确顺序。

逐块。 通过区块链,每个区块都会引用前一个区块,不是通过'区块号码'引用,而是区块的指纹,这比指定的页码更明智,因为指纹信息本身是由区块内容决定的。

对前面块的引用会创建一个块链 - 区块链!
对前面块的引用会创建一个块链 - 区块链!

内部一致性。 通过使用指纹而不是时间戳或数字序列,你还可以获得验证数据的好方法。在任何区块链中,你可以使用某些算法自行生成区块指纹。如果指纹与数据一致,并且指纹在链中,则可以确定区块链内部一致。如果任何人想干涉任何数据,他们必须从这一点再次产生所有指纹,区块链看起来会不同。

在区块链块内窥视:指纹对块的内容是唯一的。
在区块链块内窥视:指纹对块的内容是唯一的。

这意味着如果创建这个指纹很困难或者很慢(请参阅“让坏人变得很糟糕”一节),那么重新编写区块链也很困难或者很慢。

比特币的逻辑是:

  • 难以生成满足比特币区块链规则的指纹
  • 因此,如果有人想重新编写比特币区块链的部分内容,需要很长时间,并且他们必须赶超过其他诚实网络

这就是为什么人们说比特币区块链是不可变的(不能改变)*。

* 这是关于区块链中不变性的一部分。

数据分发:新数据如何传达?

点对点是在网络中分配数据的一种方式。另一种方式是客户端 - 服务器。你可能听说过BitTorrent网络上的文件在用户之间点对点共享,没有中央服务器控制数据。这就是为什么BitTorrent作为网络保持弹性的原因:没有中央服务器可以关闭。

客户端 - 服务器 在办公室环境中,数据通常保存在服务器上,无论你在何处登录,都可以访问数据。服务器保存100%的数据,客户端相信数据是确定的。大多数互联网都是客户端 - 服务器,其中网站在服务器上,你在访问时是客户端。这非常有效,并且是计算中的传统模型。

点对点 在点对点模型中,它更像是一个八卦网络,每个点都有100%的数据(或尽可能接近100%),并且更新共享。点对点网络在某种程度上比客户机 - 服务器效率低,因为数据被多次复制; 每台机器一次更改或添加数据,其他台机器也会更改或添加数据,这都会产生大量数据。但是,每台机器都是独立的。如果某台机器失去与网络其余部分的连接,在某种程度上网络会继续运行。此外,点对点网络更健壮,因为没有中央服务器可以控制,因此关闭点对点网络更困难。

左边是客户端/服务器模型,右边是点对点网络模型
左边是客户端/服务器模型,右边是点对点网络模型

点对点模型的问题

点对点模型下,即使所有点都是“可信”点,也可能存在协议或共识问题 - 如果每个点以不同的速度更新并且状态略有不同,你如何确定数据的“真实”或“正确”状态?

更糟糕的是,在一个'不可信'的点对点网络中,你不一定信任任何同伴,你如何确保系统不容易被恶意同伴破坏?

共识:你如何解决冲突?

一个常见的冲突是多个矿工在大致同一时间创建块。因为块需要时间才能在整个网络上共享,哪一个应该算作合法块呢?

例。假设网络上的所有节点都已经同步了它们的区块链,并且它们全部在区块编号80上。如果世界上的三个矿工大致同时创建“区块81”,哪个“区块81”应该被认为是有效的?请记住,每个'Block 81'看起来都会略有不同:它们肯定会包含25 BTC区块奖励的不同付款地址; 并且它们可能包含不同的集合交易。我们称它们为81a,81b,81c。

哪个块应该算作合法的块?

你如何解决这个问题?

最长链规则。 在比特币中,冲突由一条称为“最长链规则”的规则解决。

在上面的例子中,假设你先看到81a,你会假设“Block 81”是有效的。你可以开始构建下一个块,尝试创建82a:

第一个块你认为是合法的
第一个块你认为是合法的

然而在几秒钟内,你可能会看到81b。如果你看到这个,你就会留意它。如果以后你看到82b,那么“最长连锁规则”说你应该把更长的'b'链当作有效的(80,81b,82b),忽略更短的链(... 80,81a)。所以你停止尝试创建82a,而是开始尝试创建83b:

最长链规则:如果你看到多个块,请将最长链视为合法。
最长链规则:如果你看到多个块,请将最长链视为合法。

“最长链规则”是比特币区块链生态系统用来解决这些在分布式网络中常见的冲突的规则。

但是,对于更集中或可信的区块链网络,你可以通过使用可信或高级验证程序在这些情况下进行仲裁来做出决定。

有关更多详细信息,请参阅比特币挖掘的简单介绍。

升级:你如何改变规则?

作为一个整体的网络,你必须同意什么样的数据才是有效的,什么不是。使用比特币,交易有技术规则(你是否填写了所有必需的数据字段?格式是否正确等等),并且存在业务规则(你是否尝试花费超过你所拥有的比特币?是否使用过双重支付(译者注:双重支付也叫做双花)?)。

规则改变。 随着时间推移规则也在发生变化,那么网络参与者将如何就变化达成一致?会不会有一半的网络认为一个交易是有效的,另一半是因为逻辑差异而不这么认为的情况?

在一个私人控制网络体系中,这是一个很容易解决的问题:“每个人都必须在7月31日之前升级到新的逻辑”。

然而,在一个公共的,不受控制的网络中,这是一个更具挑战性的问题。

对于比特币有两部分升级。

  1. 建议更改(BIP)。首先,在建议阶段提出改进建议,进行讨论和撰写。提案被称为“BIP” - “ 比特币改善建议 ”。如果它被写入Github上的比特币核心软件,那么它可以成为升级的一部分 - 下一版本的“比特币核心”,是该协议最常见的“参考实现”。
  2. 采纳变化(矿工)。升级可以由节点和块创建者(矿工)下载并运行,但是只有在他们想要的时候才可以(你可以想象,一个改变将采矿奖励从每块25 BTC降低到0 BTC,我们会看到有多少矿工选择运行!)。

如果大多数网络(比特币,大部分是由计算能力决定的)选择运行新版本的软件,那么新式块的创建速度会比少数快,而少数将被迫切换或在“区块链”中变得无关紧要。因此,拥有大量计算能力的矿工对于实施什么有很多“说法”。


写访问:你如何控制谁可以写数据?

在比特币网络中,理论上任何人都可以下载或编写一些软件,并开始验证交易和创建块。只需转到https://bitcoin.org/en/download并运行“比特币核心”软件即可。

你的计算机将充当完整节点,这意味着:

  • 连接到比特币网络
  • 下载区块链
  • 存储区块链
  • 监听交易
  • 验证交易
  • 传递有效的交易
  • 监听块
  • 验证块
  • 传递有效的块
  • 创建块
  • '挖掘'块

该“比特币核心”软件的源代码在Github上发布:https//github.com/bitcoin/bitcoin。如果你非常喜欢,你可以检查代码自行编译并运行,而不是在bitcoin.org上下载预先打包的软件。只要它符合协议你甚至可以编写你自己的代码。

以太坊在这方面的工作方式类似 - 请参阅以太坊简介

无权限

请注意,你无需注册,登录或申请加入网络。你只需加入即可。与SWIFT网络进行比较,你不仅可以下载某些软件并开始监听SWIFT消息。通过这种方式,有人称比特币“无权限”,而SWIFT将被“许可”。

无权限不是唯一的方法

你可能希望在可信私有的网络中使用区块链技术。你可能不想公布所有有效交易或区块的规则。你可能想要控制网络规则的更改方式。控制一个值得信赖的私人网络比一个不受信任的类似免费比特币网络更容易。


防守:你如何阻止恶意破坏?

无权限或开放网络存在的问题是他们可能受到任何人的攻击。因此需要有一种使整个网络成为可信赖的方式。

恶意破坏者会做什么不会做什么?

不诚实的矿工会:

  1. 拒绝将有效的交易传递给其他节点
  2. 尝试创建包含或不包含矿工选择的具体交易的块
  3. 尝试创建一个“较长链”的区块,使以前接受的区块成为“孤块”而不是成为主链的一部分

他不会:

  1. 凭空创造比特币*
  2. 从你的帐户中窃取比特币
  3. 以你的名义付款或伪装成你

那是一种解脱。

*他有且只有在他的账本版本才会有这些交易。其他节点会拒绝这一点,这就是为什么跨多个节点确认事务非常重要。

通过交易,不诚实矿工所起的效果非常有限。如果网络的其他部分是诚实的,他们会拒绝来自不诚实矿工的任何无效交易,并且他们会监听到来自其他诚实节点的有效交易,即使不诚实矿工拒绝通过它们。

区块,如果不诚实矿工有足够的创建区块的计算能力(而这正是区块所需要的),他可以通过拒绝将其纳入自己的块耽误你的交易。然而,你的交易仍然会被其他诚实的节点认为是“未经确认的交易”,并且他们会将你的交易信息包含在他们的块中。

更糟糕的是,如果不诚实矿工能够创造网络中的最长链,并且引用“最长链规则”来剔出更短的链块。这会让他放弃一笔交易

你可以这样做:

  1. 使用相同比特币创造两种不同付款方式:一个给在线零售商,另一个给自己(另一个地址由你自己控制)
  2. 只广播支付给零售商的付款信息
  3. 当付款信息被添加到一个诚实的块中时,零售商会向你发货物
  4. 秘密创建一个更长链块,不含有付给零售商的款项,而是付给你自己的款项
  5. 发布这个更长链块。如果其他节点按照“最长链规则”规则运作,那么他们将忽略零售商支付的诚实块,并继续构建你的较长链。含有付款信息的诚实块被说成是“孤块”,它本来的目的将不再存在。
  6. 含有原始付款给零售商信息的块将被视为无效节点,因为这些比特币已经花在了(你的秘密长链)
"双花"问题攻击
"双花"问题攻击

这被称为“双重支出”,因为相同的比特币花了两次 - 但第二个是成为最终区块链的一部分,第一个最终被拒绝。 你如何让不诚实的矿工挖矿更难?

请记住,这只是区块创建者不被信任的分类帐的问题。

基本上你想让它变得困难,或者让不诚实矿工添加块而付出代价。在比特币中,需要算力昂贵来完成的。计算上的昂贵意味着“需要大量的计算机处理能力”,并转化为财务上的昂贵(因为购买计算机需要成本,然后还要运行和维护)。

计算本身是一种猜测游戏,其中块创建者需要猜测一个数字,当与块数据内容的其余部分进行比较时,结果产生小于特定数目的散列/指纹。这个数字与采矿“难度”有关,而采矿难度又和整个网络的算力相关。加入计算块的计算机越多,越难自行调节。

每2,016块(大约每2周),比特币网络就会根据块的创建速度来调整猜谜游戏的难度。

这个猜谜游戏被称为“工作量证明”。通过发布指纹小于目标号码的区块,证明你已经做了足够的猜测工作以在该时间点满足网络。


激励措施:你如何支付验证者?

交易和块验证是便宜和快速的,除非你选择使它慢而且昂贵(比特币)。

如果你在自己的网络中控制验证器,或者它们是可信的,那么

  • 你不需要增加块和昂贵的代价
  • 因此你可以减少激励他们的需要

你可以使用其他方法,例如“我们将支付人员运行验证程序”或“人员签署运行验证程序和表现的合同”。

由于比特币的“公共”结构,它需要防御歹徒,因此需要使用“工作量证明”来使计算困难增加一个块(参见防御部分)。这增加了采矿成本(设备和运行成本),因此需要激励

就像黄金价格决定了你可以在金矿上花费多少设备一样,比特币的价格决定了采用多少算力来保护网络。价格越高,挖掘越多,歹徒就越需要花费更多破坏网络。

所以,矿工们做了大量的挖矿工作,增加了难度并且提高了对网络攻击的防范。他们根据时间表使用比特币进行奖励,随着区块奖励的减少,交易费用成为矿工热衷的激励。

比特币理想化情况,是块奖励被交易费用取代。

这在理论上都是非常好的,但是你越是关注这个问题,它就越有意思,而且在比特币解决方案中,激励可能不会像预期的那样发挥作用。这是另一篇文章的内容...


结论


了解比特币背景下的区块链很有用,但是你不应该假设所有区块链生态系统都需要比特币机制,例如代币工作量证明,最长链规则等。比特币是第一次尝试分布式公共账本,不受中心节点的控制和管理。以太坊智能合约区块链的下一次迭代。这仍然有很多重大挑战。

另一方面,私人或内部分布式帐本和区块链可以用来解决其他一系列问题。与以往一样,每种解决方案都存在优缺点,你需要针对每个单独的用例分别考虑这些问题。

如果你有具体的能被区块链解决的问题,我会很乐意听到,请联系我。

感谢

感谢David Moskowitz, Tim Swanson, Roberto Capodieci。如有错误、遗漏、简化请归咎于我。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
python接口自动化42 - 生成随机请求头部UserAgent(fake_useragent)
如果网站对请求头部有限制,短时间内频繁访问会被锁定,可以使用随机请求头部伪装不同浏览器 使用 python 第三方模块 fake_useragent 随机生成请求头部 UserAgent
上海-悠悠
2021/09/14
9310
python爬虫伪装请求头---fake-useragent
在编写爬虫进行网页数据的时候,大多数情况下,需要在请求是增加请求头,下面介绍一个python下非常好用的伪装请求头的库:fake-useragent,具体使用说明如下:
forxtz
2020/10/10
2.2K0
反爬战斗之随机User-Agent请求头 fake_useragent 模块的使用 和 各种请求报错解决
在爬虫中, 最基础的反爬就是 User-Agent 请求头,但是也不能手动写出那么多真实的请求头呀, 这时候就要用上神奇的fake_useragent模块了
不止于python
2022/05/31
1.1K0
Python爬虫从入门到放弃(二十三)之 Scrapy的中间件Downloader Middleware实现User-Agent随机切换
本文讲述如何利用Scrapy框架实现爬虫的User-Agent随机切换,提高爬虫的隐蔽性和稳定性。首先介绍了User-Agent的概念和作用,然后分析了Scrapy中UserAgentMiddleware的配置和使用,最后给出了一个示例代码和详细的注释说明。
coders
2018/01/04
1.4K0
Python爬虫从入门到放弃(二十三)之 Scrapy的中间件Downloader Middleware实现User-Agent随机切换
Python 爬虫——随机UA
导入爬虫的基本库函数 了解一下我们的Request headers: 包含更多有关要获取的资源或客户端本身信息的消息头。 import requests # 常用的爬虫库 引入一个库来使用我们相关的请求消息头 from fake_useragent import UserAgent 这个需要安装相关的包,使用命令如下: pip3 install fake-useragent 接下来就是如何使用的阶段了! import requests from fake_useragent import Use
背雷管的小青年
2020/06/09
3.9K0
不讲武德的Python反爬神器『fake_useragent』
学习过HTTP的小伙伴们应该都知道,我们在进行网站访问时的request请求,通常是需要添加请求头的,否则很多情况下浏览器会认为你是非法请求,从而拒绝你的请求。
灰小猿
2022/05/05
2.2K0
Python:fake-useragent 伪装请求头
写爬虫的时候,在进行 request 请求的时候,多数情况下需要添加请求头,否则就不能正常请求。
丹枫无迹
2019/03/15
8200
担心爬虫UA代理不够用?教你一招屡试不爽的方法!
摘要:爬虫过程中的反爬措施非常重要,其中设置随机 User-Agent 是一项重要的反爬措施,Scrapy 中设置随机 UA 的方式有很多种,有的复杂有的简单,本文就对这些方法进行汇总,提供一种只需要一行代码的设置方式。
1480
2019/08/06
2K0
Python爬虫常用的小技巧-伪造随机的User-Agent
不管是做开发还是做过网站的朋友们,应该对于User Agent一点都不陌生,User Agent 中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等 通过UA来判断不同的设备或者浏览器是开发者最常用的方式方法,这个也是对于Python反爬的一种策略,但是有盾就有矛啊 写好爬虫的原则只有一条: 就是让你的抓取行为和用户访问网站的真实行为尽量一致 1、伪造UA字符串,每次请求都使用随机生成的UA
沈唁
2018/07/04
1.5K0
爬虫篇|爬虫实战(十)
要点进去继续爬取,这是爬虫最常见的方式,也是必须会的爬虫,对于这种方法,一般用框架使用的多
润森
2019/08/29
8630
爬虫篇|爬虫实战(十)
python爬取数据中的headers和代理IP问题
爬虫的主要爬取方式之一是聚焦爬虫,也就是说,爬取某一个特定网站或者具有特定内容的网站,而一般比较大的有价值的网站都会有反爬策略,其中常见的反爬策略是网站根据来访者的身份判定是否予以放行。
小白学大数据
2023/05/24
3720
手把手带你Python爬虫 | 爬取起点小说网
用python爬取一本仙侠类的小说下载并保存为txt文件到本地。本例为“大周仙吏”。
快学Python
2021/08/09
3.7K0
手把手教你利用Python网络爬虫获取APP推广信息
CPA之家app推广平台是国内很大的推广平台。该网址的数据信息高达数万条,爬取该网址的信息进行数据的分析。
Python进阶者
2020/06/10
1.1K0
手把手教你利用Python网络爬虫获取APP推广信息
Python知乎专栏爬虫,pdfkit专栏文章制作PDF电子书
搞起来,fake_useragent库伪装ua协议头,发现十次有两三次被挂比,不愧是比乎,协议头验证得比较到位。
二爷
2020/07/22
8210
Python知乎专栏爬虫,pdfkit专栏文章制作PDF电子书
Python解决521反爬方案
Python在爬虫方面的优势,想必业界无人不知,随着互联网信息时代的的发展,Python爬虫日益突出的地位越来越明显,爬虫与反爬虫愈演愈烈。下面分析一例关于返回HTTP状态码为521的案例。
conanma
2021/11/01
8000
基于bs4+requests的python爬虫伪装 - 草稿
要导入fake-useragent库,需要先用pip安装,安装命令:pip install fake-useragent params是爬虫伪装的参数,数据类型为字典dict,里面有2个键值对,2个键:headers、proxies。 headers的数据类型是字典,里面有1个键值对,键User-Agent对应的值数据类型为字符串,User-Agent中文翻译是用户代理。 proxies的数据类型是字典,里面有1个键值对,键http对应的值数据类型为字符串,是代理服务器的url。 匿名ip主要是从66ip.cn网站获取。
潇洒坤
2018/09/10
6880
Python爬虫实战:单线程、多线程和协程性能对比
今天我要给大家分享的是如何爬取中农网产品报价数据,并分别用普通的单线程、多线程和协程来爬取,从而对比单线程、多线程和协程在网络爬虫中的性能。
叶庭云
2021/01/30
9810
Scrapy随机切换用户代理User-Agent
使用fake-useragent: https://github.com/hellysmile/fake-useragent 这是一个可以随机切换访问头的插件 安装方法: pip install fake-useragent 使用方法: from fake_useragent import UserAgent ua = UserAgent() ua.ie # Mozilla/5.0 (Windows; U; MSIE 9.0; Windows NT 9.0; en-US); ua.msie # Moz
SeanCheney
2018/04/24
1.3K0
Python 反爬虫与反反爬虫
✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的博客 🍊个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。 🥭本文内容:Python 反爬虫与反反爬虫 ---- Python 反爬虫与反反爬虫 1.什么是爬虫 2.为什么要反爬虫 3.反爬虫的手段 3.1 基于请求头 3.2 基于用户行为 4.反反爬虫 4.1 设置请求头 4.2 设置间隔时间 5.爬虫协议 ---- 1.什么是爬虫 网络爬虫(又称为网页蜘蛛,网络机器人,在FOA
小嗷犬
2022/11/15
8160
Python秀操作 自动更换电脑壁纸
原文链接:https://yetingyun.blog.csdn.net/article/details/112982010 创作不易,未经作者允许,禁止转载,更勿做其他用途,违者必究。
叶庭云
2021/01/29
6820
推荐阅读
相关推荐
python接口自动化42 - 生成随机请求头部UserAgent(fake_useragent)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档