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

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

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

在收集数据的时分,经常会碰到有反收集战略规矩的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双十二赛马规则 过去双十一促销,很多商家说没有达到预期,甚至很多免费流量也没有改变。问题的关键其实在于赛马规则。大推广前会有额外的赛马规则分配免费流量。想要在推广期获得更确定性的流量,必须了解...

奥运会遭到俄罗斯黑客攻击!黑客攻击微信聊天记录

人民网2021年8月13日02:28:03的消息,黑客攻击微信聊天记录 东京奥运会惨遭俄罗斯黑客攻击! 英国国家网络安全中心日前揭露了一项惊人的黑客计划:俄罗斯军事情报部门曾准备对原定今夏举办的东京奥林匹克运动会和残奥会发起网络攻击。据悉,其攻击目标涵盖赛事组织者、后勤公司和赞助商。 打开百...

【干货知识】高級不断渗透第八季-demo就是远程控制

本季度是《高級不断渗透-第七季demo的发展》的持续。 点一下文尾左下角“阅读”可阅读文章第七季文章正文。 在第一季有关后门中,文章内容提及再次编译程序notepad ,来引入有目标源代码后门结构。 在第六季有关后门中,文章内容假定不在获知notepad 的源代码,来引入无目标源代码沟...

安宫牛黄丸图片及价格(同仁堂安宫丸价钱13万

动物研究显示,体外培育牛黄;还有个绿色锦盒包装的用的是人工麝香。 730点00安宫牛黄丸的药理作用主要表现为抗惊厥作用及解热作用。想给家里老人备一些,天然牛黄,并且只有北京同仁堂生产的安宫牛黄丸,同仁堂安宫牛黄丸会员价,因为主药)原料不同,北京同仁堂牛黄解毒丸的市场价格在2005年4月30,才可以安...

我老公老是让他家的亲戚来我家,我该怎么办?请各位帮我想想办法,我

我老公老是让他家的亲戚来我家,我该怎么办?请各位帮我想想办法,我 请各位帮我想想办法,开网店怎么找女装货源唔爱神起助您成就财富人生,想做微商?想开实体店?想开淘宝店?什么才是你创业的最重要步骤?货源!想在微商卖童装母婴用品纸尿裤女装,开童装女装店铺,你去哪里找最好的货源?如何找童装女装一手货源呢?...

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

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

评论列表

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

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

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

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

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

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

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

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

发表评论

访客

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