首页 > 编程知识 正文

100台手机工作室网络搭建,从零开始打造个人ip

时间:2023-05-06 12:43:52 阅读:28325 作者:961

随着我们爬行动物的速度加快,我们往往意识到数据爬不上去,就试着打印一下。

不返回数据,而且一言不发

你熟悉吗?

想想看。 人是怎么访问网站的? 发送请求。 是的。 那么…

request.headers,

当sydfg疯狂地请求别人的网站时,我觉得人的网站管理员有点奇怪

他看到要求的header信息,吓了一跳。 于是,看到的headers信息如下。

host :127.0.0.133603369用户代理: python-requests/3.21.0 accept-encoding 3360 gzip,deflateaccept33666

用户代理: python-requests/3.21.0

居然用python的库委托,说明你暴露了。 人不封你很奇怪吗?

那怎么办? 你在欺骗自己。

python不能伪装。 因为浏览器可以伪装,所以可以修改浏览器的请求标题。

简而言之,就是让自己的python爬虫假装浏览器。

伪装Header的哪里?

要让自己的python爬虫假装浏览器,请伪装headers。 headers有很多字段。 我们主要注意几个字段吗? headers数据通常可以是这两个,但我们强烈建议爬行动物对每个请求都使用用户代理,“referer”需要时添加,不需要时不使用。 什么是Referer? 以后补充知识点)

图标:

上面的几个重要点说明如下。

请求头:

“我是人! ”3354用户代理的修改:保存系统和浏览器的模型版本,通过修改使其看起来像自己是人。

“来自台湾省”——修正referer :也有网站告诉服务器是从哪个网站进来的,并进行检查,而不是凭空而来。

“饼干! ”:带饼干还是不带饼干,结果可能不同。 试着拿着饼干去“贿赂”服务器,让她提供完整的信息。

3.headers伪装-随机用户代理

爬行机制:许多站点检测Headers用户代理,而一些站点检测Referer。 一些资源站点的防盗链会检测到Referer。

随机用户代理生成:生成随机用户代理。 这样可以获得各种浏览器的外观。

(代码马上就能用了,复印一下带过去就行了)

#!/usr/HP dbl/python3# @ readme :关于检测逆向headers伪装#headers的反爬行动物from fake _ useragentimportuseragent #下载: pipining # 1.指定浏览器的请求标头print(UA.ie ) print ) UA.opera ) print ) UA.chrome (print ) ua.Google (print ) ua.chrome ua.random方式导入请求SUA=用户代理) )打印) ua.random )随机产生headers={ '用户代理' 3360 ua.readers } ' response=requests.get(URL,headers=headers ) print(response.status_code ) ) )是

如果想爬照片,照片防盗链就用Referer。

headers=‘user-agent’: ua.random,‘referer’:‘在此插入图像主页’}

遇到防盗链图片时,首先爬上所有图片的地址. jpg,将它们保存在列表中,循环访问图片地址,以‘WB’格式打开并写入文件,文件名根据图片地址动态更改

这基本上是你的爬虫对象必须是认真的图像网站才能使用。

4.2.1自制的ip代理池多线程爬虫

就是自己收集网上公开的免费ip,自建自己的ip代理池。

就是通过python程序获取大量互联网上免费的代理ip,并定时检测这些ip是否可用。 那么,下次使用代理ip时,只需要带到自己的ip代理池即可。

简单来说,访问免费代理网站-正则/xpath提取ip和端口-测试ip是否可用“如果可用则保存”将使用ip爬虫过期并放弃ip。

此进程可以使用多线程或异步方法。 这是因为检查代理是一个非常慢的过程。

这是来源于网络的一个西刺代理的多线程ip代理爬虫:(我不用)

#!/usr/hpdbl/python3#@Readme : IP代理==模拟一个ip地址去访问某个网站(爬的次数太多,ip被屏蔽)# 多线程的方式构造ip代理池。from bs4 import BeautifulSoupimport requestsfrom urllib import request, errorimport threadingimport osfrom fake_useragent import UserAgentinFile = open('proxy.txt') # 存放爬虫下来的ipverifiedtxt = open('verified.txt') # 存放已证实的可用的iplock = threading.Lock()def getProxy(url): # 打开我们创建的txt文件 proxyFile = open('proxy.txt', 'a') # 伪装 ua = UserAgent() headers = { 'User-Agent': ua.random } # page是我们需要获取多少页的ip,这里我们获取到第9页 for page in range(1, 10): # 通过观察URL,我们发现原网址+页码就是我们需要的网址了,这里的page需要转换成str类型 urls = url + str(page) # 通过requests来获取网页源码 rsp = requests.get(urls, headers=headers) html = rsp.text # 通过BeautifulSoup,来解析html页面 soup = BeautifulSoup(html,'html.parser') # 通过分析我们发现数据在 id为ip_list的table标签中的tr标签中 trs = soup.find('table', id='ip_list').find_all('tr') # 这里获得的是一个list列表 # 我们循环这个列表 for item in trs[1:]: # 并至少出每个tr中的所有td标签 tds = item.find_all('td') # 我们会发现有些img标签里面是空的,所以这里我们需要加一个判断 if tds[0].find('img') is None: nation = '未知' locate = '未知' else: nation = tds[0].find('img')['alt'].strip() locate = tds[3].text.strip() # 通过td列表里面的数据,我们分别把它们提取出来 ip = tds[1].text.strip() port = tds[2].text.strip() anony = tds[4].text.strip() protocol = tds[5].text.strip() speed = tds[6].find('div')['title'].strip() time = tds[8].text.strip() # 将获取到的数据按照规定格式写入txt文本中,这样方便我们获取 proxyFile.write('%s|%s|%s|%s|%s|%s|%s|%sn' % (nation, ip, port, locate, anony, protocol, speed, time))def verifyProxyList(): verifiedFile = open('verified.txt', 'a') while True: lock.acquire() ll = inFile.readline().strip() lock.release() if len(ll) == 0: break line = ll.strip().split('|') ip = line[1] port = line[2] realip = ip + ':' + port code = verifyProxy(realip) if code == 200: lock.acquire() print("---Success成功:" + ip + ":" + port) verifiedFile.write(ll + "n") lock.release() else: print("---Failure失败:" + ip + ":" + port)def verifyProxy(ip): ''' 验证代理的有效性 ''' ua = UserAgent() requestHeader = { 'User-Agent': ua.random } url = "http://www.baidu.com" # 填写代理地址 proxy = {'http': ip} # 创建proxyHandler proxy_handler = request.ProxyHandler(proxy) # 创建opener proxy_opener = request.build_opener(proxy_handler) # 安装opener request.install_opener(proxy_opener) try: req = request.Request(url, headers=requestHeader) rsq = request.urlopen(req, timeout=5.0) code = rsq.getcode() return code except error.URLError as e: return eif __name__ == '__main__': # 手动新建两个文件 filename = 'proxy.txt' filename2 = 'verified.txt' if not os.path.isfile(filename): inFile = open(filename, mode="w", encoding="utf-8") if not os.path.isfile(filename2): verifiedtxt = open(filename2, mode="w", encoding="utf-8") tmp = open('proxy.txt', 'w') tmp.write("") tmp.close() tmp1 = open('verified.txt', 'w') tmp1.write("") tmp1.close() # 多线程爬虫西刺代理网,找可用ip getProxy("http://www.xicidaili.com/nn/") getProxy("http://www.xicidaili.com/nt/") getProxy("http://www.xicidaili.com/wn/") getProxy("http://www.xicidaili.com/wt/") all_thread = [] for i in range(30): t = threading.Thread(target=verifyProxyList) all_thread.append(t) t.start() for t in all_thread: t.join() inFile.close() verifiedtxt.close()

运行一下,效果:

爬出来的可用的很少或者很短:

重点来了!!!!!!!!!

4.2.3 开源 ip代理池—ProxyPool(吐血推荐)
类比线程池,进程池,懂了吧?
这是俺发现的一个不错的开源 ip 代理池ProxyPool,可以用windows系统的,至少Python3.5以上环境哟,还需要将Redis服务开启。

现成的代理池,还不用起来?

ProxyPool下载地址:

https://github.com/Python3WebSpider/ProxyPool.git

(可以手动下载也可以使用git下来。)

1.ProxyPool的使用:

首先使用 git clone 将源代码拉到你本地,

3.进入proxypool目录,修改settings.py文件,PASSWORD为Redis密码,如果为空,则设置为None。(新装的redis一般没有密码。)

(如果你没 redis 的话,可以先去下载了安装了再来看吧。)

(假设你的redis已经安装完成。)

4.接着在你 clone 下来的文件目录中(就是这个ProxyPool存的电脑路径 )

5.安装相关所需的 依赖包:
(pip或pip3)

pip install -r requirements.txt

(如果你把ProxyPool导入在pycharm里面,那就一切都在pycharm里面搞就可以了。

6.接下来开启你的 redis服务,

直接cmd 打开dos窗口,运行:redis-server.exe
即可开启redis服务器。redis 的默认端口就是 6379

7.接着就可以运行 run.py 了。

可以在cmd里面命令方式运行,也可以导入pycharm里面运行。

图示:

8.运行 run.py 以后,你可以打开你的redis管理工具,或者进入redis里面查看,这时候在你的 redis 中就会存入很多已经爬取到的代理 ip 了:

9.项目跑起来之后,【不要停止】,此时redis里面存了ip,就可以访问这个代理池了。

在上面的图中,可以看到有这么一句话

Running on http://0.0.0.0:5555/ (Press CTRL+C to quit)
这就是告诉我们随机访问地址URL是多少。
10.在浏览器中随机获取一个代理 ip 地址:

你就浏览器输入:

http://0.0.0.0:5555/random


11.在代码中随机获取一个ip代理

就这样:

import requests# 随机ip代理获取PROXY_POOL_URL = 'http://localhost:5555/random'def get_proxy(): try: response

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。