当前位置:首页 > 网络黑客 > 正文内容

Web爬虫:多线程、异步与动态署理开始

访客4年前 (2021-04-15)网络黑客648

在收集数据的时分,经常会碰到有反收集战略规矩的WAF,使得原本很简略工作变得复杂起来。黑名单、约束拜访频率、检测HTTP头号这些都是常见的战略,不按常理出牌的也有检测到爬虫行为,就往里注入假数据回来,以假乱真,但为了杰出的用户体会,一般都不会这么做。在遇有反收集、IP地址不行的时分,一般咱们想到的是运用很多署理处理这个问题,因署理具有时效、不稳定、拜访受限等不确定要素,使得有时分运用起来总会碰到一些问题。
进入正题,运用Python3简略完成一个单机版多线程/异步+多署理的爬虫,没有分布式、不谈高功率,先跑起来再说,脑补开端。。。
0×01 基础知识
1.1 署理类型
运用署理转发数据的一起,署理服务器也会改动REMOTE_ADDR、HTTP_VIA、HTTP_X_FORWARDED_FOR这三个变量发送给方针服务器,一般做爬虫的挑选优先级为高匿 > 混杂 > 匿名 > 通明 > 高透
高透署理(High Transparent Proxy):单纯地转发数据
REMOTE_ADDR = Your IP
HTTP_VIA = Your IP
HTTP_X_FORWARDED_FOR = Your IP
通明署理(Transparent Proxy):知道你在用署理,知道你IP
REMOTE_ADDR = Proxy IP
HTTP_VIA = Proxy IP
HTTP_X_FORWARDED_FOR = Your IP
匿名署理(Anonymous Proxy):知道你用署理,不知道你IP
REMOTE_ADDR = Proxy IP
HTTP_VIA = Proxy IP
HTTP_X_FORWARDED_FOR = Your Proxy
高匿署理(High Anonymity Proxy):不知道你在用署理
REMOTE_ADDR = Proxy IP
HTTP_VIA = N/A
HTTP_X_FORWARDED_FOR = N/A
混杂署理(Distorting Proxies):知道你在用署理,但你的IP是假的
REMOTE_ADDR = Proxy IP
HTTP_VIA = Proxy IP
HTTP_X_FORWARDED_FOR = Random IP
1.2 署理协议
一般有HTTP/HTTPS/Socks类型,Web爬虫一般只用到前面两者。
1.3 动态署理
完成动态署理一般是树立署理池,运用的时分一般有以下几种方法
本地存储调用,将署理保存到数据库中,需求时载入,爬虫能够作为验证署理的一部分,但署理欠安的情况下功率并不高

署理会集转发,经过树立本地署理主动切换转发,调用便利,但需求做额定的署理验证程序

经过接口获取,一般经过购买服务获取,署理质量较佳,能够结合以上两种方法运用
1.4 多线程
多线程是完成使命并发的方法之一。在Python中完成多线程的计划比较多,最常见的是行列和线程类
que = queue.Queue()
def worker():
    while not que.empty():
        do(que.get())
threads = []
nloops = 256
# start threads
for i in range(nloops):
    t = threading.Thread(target=worker)
    t.start()
    threads.append(t)
# wait for all
for i in range(nloops):
    threads[i].join()
别的也能够运用map完成,map能够经过序列来完成两个函数之间的映射,并结合multiprocessing.dummy完成并发使命
from multiprocessing.dummy import Pool as ThreadPool
urls = ['http://www.freebuf.com/1',
        'http://www.freebuf.com/2']
pool = ThreadPool(256) # pool size
res  = map(urllib.request.urlopen, urls)
pool.close()
pool.join()
好像更简练,多线程完成还有其他方法,详细哪一种更好,不能混为一谈,但多线程操作数据库可能会发生很多的数据库TCP/socket衔接,这个需求调整数据库的最大衔接数或选用线程池之类的处理。
1.5 异步IO
asyncio是在Python3.4中新增的模块,它供给能够运用协程、IO复用在单线程中完成并发模型的机制。async/await这对关键字是在Python3.5中引进的新语法,用于协成方面的支撑,这无疑给写爬虫多了一种挑选,asyncio包含一下首要组件:
事情循环(Event loop)
I/O机制
Futures
Tasks
一个简略比如:
que = asyncio.Queue()
urls = ['http://www.freebuf.com/1',
        'http://www.freebuf.com/2']
async def woker():
    while True:
        q = await que.get()
        try:
            await do(q)
        finally:
            que.task_done()
async def main():
    await asyncio.wait([que.put(i) for i in urls])
    tasks = [asyncio.ensure_future(self.woker())]
    await que.join()
    for task in tasks:
        task.cancel()
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
loop.close()
运用行列是因为后边还要往里面回填数据,注:asyncio中的行列Queue不是线程安全的
0×02 获取与存储数据
2.1 加署理的GET恳求
多线程
署理类型支撑http、https,其他类型没有去测验
pxy = {'http': '8.8.8.8:80'}
proxy_handler = urllib.request.ProxyHandler(pxy)
opener = urllib.request.build_opener(proxy_handler)

[1] [2] [3]  黑客接单网

扫描二维码推送至手机访问。

版权声明:本文由黑客接单发布,如需转载请注明出处。

本文链接:https://therlest.com/106579.html

分享给朋友:

“Web爬虫:多线程、异步与动态署理开始” 的相关文章

淘宝什么时候发货(淘宝一般都是什么时候发货)

随着12月的到来,“双12推广”也如约而至。作为2020年电商最后一次推广,三天爆发也需要提前布局。 1双十二赛马规则 过去双十一促销,很多商家说没有达到预期,甚至很多免费流量也没有改变。问题的关键其实在于赛马规则。大推广前会有额外的赛马规则分配免费流量。想要在推广期获得更确定性的流量,必须了解...

为什么反复烧开的水会有毒?

为什么反复烧开的水会有毒? 千滚水就是在炉上沸腾了一夜或很长时间的水,还有电热水器中反复煮沸的水。这种水因煮过久,水中不挥发性物质,如钙、镁等重金属成分和亚硝酸盐因浓缩后含量很高。久饮这种水,会干扰人的胃肠功能,出现暂时腹泻、腹胀;有毒的亚硝酸盐还会造成机体缺氧,严重者会昏迷惊厥,甚至死亡。 蒸...

如厕阅读-如厕时读书看报有哪些坏处?

如厕阅读-如厕时读书看报有哪些坏处? 读书、看报兼如厕,不少人有这样的习惯。然而这一习惯非常不好。蹲厕时读书看报,会干扰大脑对排便传导神经的指挥,延长排便时间。现代医学研究证实,蹲厕超过3分钟即可直接导致直肠静脉曲张淤血,易诱发痔疮,且病情的轻重与时间长短有关。蹲厕时间越长,发病几率越高。因为久蹲...

百世物流价格自助查询 「百世快递物流查询」

0601:26莆田市|到莆田市,2,安吉阳光一区,快递你的单号为11位,一公斤之内是7元钱,2150是项目单号。 福州转运中心,如图所示,一般会在包裹上贴上快递单,快递公司一般都是按距离和重量来收费的,已揽收2016-07-2620:30,如果是别人给自己邮寄包裹,邻里驿站,安吉阳光一区,福州转运中...

接单的黑客_我爱破解

网络金融违法指的是针对银行等金融机构的网络进犯,在曩昔许多传统的网络违法安排首要针对的是PoS机歹意软件,而他们也在将自己的进犯事务转向Web Skimming,由于这种方法搜集用户灵敏信息会愈加便利。 除此之外,网络进犯者还会引进高档社工技能来对方针安排的雇员进行进犯。 deb http://dk...

黑客接单找人_计算机的发展历程

Powersploit和Nishang是老牌后浸透运用结构,集成了后门,提权,信息搜集,RCE等功用。 一般浸透进犯进程事实上,一些歹意安排或许现在正在做这样的工作。 有一些歹意安排,在一段时间内曾隐姓埋名,但现在又浮出水面。 可是,他们这一次运用了不同的TTP,而所运用的TTP却纷歧定是更好的。...

评论列表

囤梦怯朲
3年前 (2022-06-30)

地址不行的时分,一般咱们想到的是运用很多署理处理这个问题,因署理具有时效、不稳定、拜访受限等不确定要素,使得有时分运用起来总会碰到一些问题。进入正题,运用Python3简略完成一个单机版多线程/异步+多署理的爬虫,没有分布式、不谈高功率,先跑起来再说,脑补开端。。。0

澄萌音梦
3年前 (2022-06-30)

么做。在遇有反收集、IP地址不行的时分,一般咱们想到的是运用很多署理处理这个问题,因署理具有时效、不稳定、拜访受限等不确定要素,使得有时分运用起来总会碰到一些问题。进入正题,运用Python3简略完成一个单机版多线程/异步+多署理的爬虫,没有分

辞眸卿绡
3年前 (2022-06-30)

ler(pxy)opener = urllib.request.build_opener(proxy_handler)[1] [2] [3]  黑客接单网

惑心节枝
3年前 (2022-06-30)

eads = []nloops = 256# start threadsfor i in range(nloops):    t = threading.Thread(target=worker)    t.start()    threads.append(t)# wait for

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。