我裂开了,教给他如何搭建和使用代理服务器,他居然用来做这么不正经的事(爬虫,代理ip)[通俗易懂]

我裂开了,教给他如何搭建和使用代理服务器,他居然用来做这么不正经的事(爬虫,代理ip)

大家好,又见面了,我是全栈君。

代码是正经代码,但是程序员正不正经就不知道了。

我裂开了,教给他如何搭建和使用代理服务器,他居然用来做这么不正经的事(爬虫,代理ip)[通俗易懂]

前言

在使用爬虫对某些网站进行爬取时,为了不让网站发现我们的ip,模拟其他用户ip地址去访问网站。也就相当于间接的去访问网站,流程如图:

我裂开了,教给他如何搭建和使用代理服务器,他居然用来做这么不正经的事(爬虫,代理ip)[通俗易懂]

我们使用到代理服务器,去间接访问网络,并通过代理返回数据。而不是走直接访问这条流程。

正文阅读

第一、什么是代理服务器

代理服务器(Proxy Server)的功能是代理网络用户去取得网络信息。形象地说,它是网络信息的中转站,是个人网络和Internet服务商之间的中间代理机构,负责转发合法的网络信息,对转发进行控制和登记。

我裂开了,教给他如何搭建和使用代理服务器,他居然用来做这么不正经的事(爬虫,代理ip)[通俗易懂]

第二、Requests请求使用代理。

在已经知道一个代理ip之后,我们如何使用呢?

import requests
response=requests.get("http://www.baidu.com",proxies={"http":"127.0.0.1:1245"})
print(response.text)
在使用requests模块去请求接口时,便可以通过参数proxies 来进行传输,将所需要的代理ip进行设置。

第三、本地计算机如何使用代理服务器。

已经学会了如何请求接口时,添加代理,那如何为本地结算机设置代理呢。

找到我们的代理ip,然后按照下面的操作进行。

方法1:手动设置代理

1、按win键,或者打开ie浏览器

2、搜索internet选项,或者在ie浏览器右上角设置选择internet选项。

我裂开了,教给他如何搭建和使用代理服务器,他居然用来做这么不正经的事(爬虫,代理ip)[通俗易懂]

3、点击连接,找到局域网设置

我裂开了,教给他如何搭建和使用代理服务器,他居然用来做这么不正经的事(爬虫,代理ip)[通俗易懂]

4、勾选代理,并设置ip地址,端口。

我裂开了,教给他如何搭建和使用代理服务器,他居然用来做这么不正经的事(爬虫,代理ip)[通俗易懂]

这样,我们就成功设置了代理,接下来访问的所有数据都会传输到这个代理ip中。

方法2:直接使用命令行修改

这么修改也太麻烦了一点,直接使用命令行来解决是不是要简单一点呢?

设置代理:

@echo off
echo 设置代理服务器……
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 1 /f
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer /d "39.106.223.1342:80" /f
start iexplore.exe
Pause

取消代理:

@echo off
echo 取消代理服务器……
reg add "hkcu\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 0x0 /f
start iexplore.exe
Pause

这里为什么要启动一下ie浏览器呢?主要是为了让我们的配置生效,找了一些方法都不能生效,启动一下ie浏览器生效比较快,还简单。

第四、验证计算机代理ip是否有用,服务器接收情况。

我们已经设置成功了,那我们访问网站时是否有效呢?抱着这个因为,我们继续来往下看。

需要做验证,那我们需要用到服务端。当我们请求服务器时,显示的ip,我们就可以知道是否生效。

我裂开了,教给他如何搭建和使用代理服务器,他居然用来做这么不正经的事(爬虫,代理ip)[通俗易懂]

服务器端:我们需要在服务器端搭建一个简易网站,我们可以通过服务器打印的日志看出当前请求的ip,这里我们使用的是windows服务器,如果有兴趣研究学习的,可以先花五十元,去买一个月那种便宜的服务器玩一下。当然用途不只是研究本课题,还有其他用途。

我裂开了,教给他如何搭建和使用代理服务器,他居然用来做这么不正经的事(爬虫,代理ip)[通俗易懂]

代码如下:

from flask import *
app = Flask(__name__)
@app.route('/')
def index():
    ip = request.remote_addr#获取用户ip
    return "你的ip为"+ip
if __name__ == '__main__':
    app.run(host="0.0.0.0",port=8088)#0000,允许所有用户访问,127.0.0.1允许本地用户访问。

这里,使用我的服务器ip便可以访问,http://123.207.31.148:8088/,网站:http://www.djyqxbc.vip当我们访问这个链接,然后就可以查询到ip。

1、原始ip

用户端显示:

我裂开了,教给他如何搭建和使用代理服务器,他居然用来做这么不正经的事(爬虫,代理ip)[通俗易懂]

服务器端请求情况:

我裂开了,教给他如何搭建和使用代理服务器,他居然用来做这么不正经的事(爬虫,代理ip)[通俗易懂]

Ok,成功获取到我们的ip,接下来,我们换一个代理ip试一下。

2、代理ip

我们使用代理ip为58.240.52.114:80

用户端显示:

我裂开了,教给他如何搭建和使用代理服务器,他居然用来做这么不正经的事(爬虫,代理ip)[通俗易懂]

服务器端显示情况:

我裂开了,教给他如何搭建和使用代理服务器,他居然用来做这么不正经的事(爬虫,代理ip)[通俗易懂]

我们可以通过这个简单的例子看出,我们本地使用的代理ip是生效的,那使用requests模块请求呢,如图,我们可以看到,是相同的结果。那说明代理ip对于服务器端来说,的确能起到掩盖ip的作用。

我裂开了,教给他如何搭建和使用代理服务器,他居然用来做这么不正经的事(爬虫,代理ip)[通俗易懂]

第五、Fiddle代理,安全,以及相关工具。

在本地设置代理方法有很多,比如上面提到的第三条。然后还有:

Fiddle工具,如图,我们可以通过设置代理端口来设置,本地请求的数据,都会发送到127.0.0.1:8888:

我裂开了,教给他如何搭建和使用代理服务器,他居然用来做这么不正经的事(爬虫,代理ip)[通俗易懂]

Fiddle只是其中一个,也是我们测试同学常用的一个软件。另外还有jmeter也同样可以设置代理,添加一个代理服务器。

我裂开了,教给他如何搭建和使用代理服务器,他居然用来做这么不正经的事(爬虫,代理ip)[通俗易懂]

当然,还有其他很多工具,这里就不一一列举了。

Fiddle常用于爬虫分析,安全分析,测试同学测试抓包。

这里能不能拦截使用代理呢。当你使用了代理进行访问时,禁止访问。

1、Js,app判断是否系统设置代理,如果设置代理,给出警告,不加载数据

优点:快,缺点:用户修改js代码,替换js,依然可以访问。但一般用户操作不了。多数人都是正常访问的。

2、限制代理ip访问,建立一个代理ip库,将市面上的代理ip存储进去,用户访问时,与代理ip库对比。如果有就直接禁制。

优点,能限制大多数代理ip。缺点:额外增加查询步骤,速度降低。

3、不限制。普通用户一般不这样操作,也不会,做好用户检验,没有这个用户,你有代理ip也还是这个用户。你换用户,随你换好了。

当然大家还有什么好的方式也可以在评论区讨论哦。

第六、搭建一个自己的代理服务器

搭建代理服务器,需要使用到一款软件,ccproxy。

资源链接(已破解):公众号回复“代理服务器”便可获取

将这款软件安装到你的服务器上,并启动,通过设置,我们可以设置代理端口号。根据对应需要服务进行设置端口号。

我裂开了,教给他如何搭建和使用代理服务器,他居然用来做这么不正经的事(爬虫,代理ip)[通俗易懂]

这样,我们的代理服务器就搭建好了,代理ip:123.207.31.148:808然后我们来验证我们代理是否有效。

第七、代理服务器有效性验证。

想要验证我们自己搭建的代理服务器是否有效,那我们这次直接来看,request模块是否有效,需要做的是对比代理服务器启动前后的变化来判断。

1、代理服务未启动时

关闭代理,并请求接口,会提示代理服务器错误,就说明没有这个代理:

import requests
response=requests.get("http://123.207.31.148:8088/",proxies={"http":"123.207.31.148:808"})
print(response.text)

我裂开了,教给他如何搭建和使用代理服务器,他居然用来做这么不正经的事(爬虫,代理ip)[通俗易懂]

2、代理服务器启动时

我们启动代理服务器,再来请求一下,我们可以从下面两幅图,以及和上面做出对比,ip也是我们设置的代理服务器,我们的代理服务器有效。

用户端:

我裂开了,教给他如何搭建和使用代理服务器,他居然用来做这么不正经的事(爬虫,代理ip)[通俗易懂]

服务器端:

我裂开了,教给他如何搭建和使用代理服务器,他居然用来做这么不正经的事(爬虫,代理ip)[通俗易懂]

3、修改代理服务器端口

我们将原来的808端口修改为8081,再来试一下。808也就不再生效。

我裂开了,教给他如何搭建和使用代理服务器,他居然用来做这么不正经的事(爬虫,代理ip)[通俗易懂]

我裂开了,教给他如何搭建和使用代理服务器,他居然用来做这么不正经的事(爬虫,代理ip)[通俗易懂]

8081请求:

我裂开了,教给他如何搭建和使用代理服务器,他居然用来做这么不正经的事(爬虫,代理ip)[通俗易懂]

这样,我们的代理服务器也就说明设置是有效的。

第八、爬取代理服务器

我们一个代理服务器已经搞定了,相同的,当我们有几百,上千个服务器,都搭建了代理服务器,那我们是不是拥有了自己的代理ip池。但我们没那么多钱,也没必要。只能去用别人的了。

代理ip池获取,代码如下:

import requests
from bs4 import BeautifulSoup
​
def proxy_ip(protocol=["http"],anonlv1=[],country=["CN"]):
    """
    :param protocol: 请求方式:http,https,socks4,socks5
    :param anonlv1: 级别:1,2,3,4   L1 – 透明,L2 – 匿名,L3 – 扭曲,L4 – 精英
    :param country: 国家,无为全部,CN 中国
    :return:ip_list,ip列表
    """
    text=""
    for i in protocol:
        text+="protocol="+i+"&"
    for i in anonlv1:
        text+="anonlv1="+i+"&"
    for i in country:
        text+="country="+i+"&"
    global headers
    headers={
    'Cookie': '_ga=GA1.2.1786575828.1619658683; _gid=GA1.2.555491280.1623999959; _gat=1',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36'
    }
    response=requests.get("http://proxydb.net/?"+text,headers=headers)
    Soup = BeautifulSoup(response.text, "html.parser")
    table = Soup.find_all("table")[0].find_all("a")
    list=[]
    for i in table:
        ip=i.get_text()
        list.append(ip)
    return list

文章总结

通过本文,你可以了解到

1、requests模块如何设置代理。

2、代理ip设置是否真有效。

3、如何搭建自己的代理服务器。

4、代理ip池的获取。

处于安全方面来说,因为我们请求时,数据会发送到代理服务器,如果请求在账号密码是明文的情况下,代理服务器就可以获取到你的账号信息。

同理,翻墙软件也是一种代理,只不过他代理到国外去了。翻墙软件也是能获取到你的用户信息的哦,所以大家需要注意个人信息安全呀。

我裂开了,教给他如何搭建和使用代理服务器,他居然用来做这么不正经的事(爬虫,代理ip)[通俗易懂]

相关推荐​:

(tkinter)撩妹弹窗(3)之不要越过三八线,canvas的使用方法

过分了,别人用来做桌面应用开发,这家伙却用来撩妹(2)-上帝给你开了各种撩妹窗口(Tkinter)

过分了,别人用来做桌面应用开发,这家伙却用来撩妹(1)–上帝给你开一个窗口(Tkinter)—tkinter常用函数解析

定时任务

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/111355.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 模拟退火 python_粒子群算法怎么设置约束条件

    模拟退火 python_粒子群算法怎么设置约束条件1、最优化与线性规划最优化问题的三要素是决策变量、目标函数和约束条件。线性规划(Linearprogramming),是研究线性约束条件下线性目标函数的极值问题的优化方法,常用于解决利用现有的资源得到最优决策的问题。简单的线性规划问题可以用Lingo软件求解,Matlab、Python中也有求解线性规划问题的库函数或求解器,很容易学习和使用,并不需要用模拟退火算法。但是,由一般线性规划问题所衍生的整数规划、混合规划、0/1规划、二次规划、非线性规划、组合优化问题,则并不是调用某个库函数都能处理.

    2022年10月13日
    3
  • 博弈论三个枪手的故事_博弈模型的三个基本要素

    博弈论三个枪手的故事_博弈模型的三个基本要素彼此痛恨的甲、乙、丙三个枪手准备决斗。甲枪法最好,十发八中;乙枪法次之,十发六中;丙枪法最差,十发四中。先提第一个问题:如果三人同时开枪,并且每人只发一枪;第一轮枪战后,谁活下来的机会大一些?一般人认为甲的枪法好,活下来的可能性大一些。但合乎推理的结论是,枪法最糟糕的丙活下来的几率最大。我们来分析一下各个枪手的策略。枪手甲一定要对枪手乙先开枪。因为乙对甲的威胁要比丙对甲的威胁更大,甲应该首…

    2022年10月15日
    3
  • 深挖P2P传输技术,升级与创新并举

    深挖P2P传输技术,升级与创新并举你用过P2P传输吗?现在的P2P传输可以说是继局域网、ftp、http之后最广泛使用的文件分享和传播途径,被众多企业运用在工作中。P2P传输,全称“点对点传输”,是一种文件即时传输方式,目标是让所有客户端都能提供资源,包括带宽、存储空间、计算能力。P2P传输技术有很多应用,包括共享各种格式音频、视频、数据等。**P2P传输技术是如何实现即时传输?为什么P2P传输可以被众多企业接受?**本文,我们将带着这两个问题出发,深挖P2P传输技术。一、一张图看懂P2P传输技术传统的http传输是服务器上直接复制

    2022年7月16日
    17
  • readprocessmemory函数分析_max函数用法

    readprocessmemory函数分析_max函数用法函数功能描述:该函数用来读取指定进程的空间的数据,此空间必须是可以访问的,否则读取操作会失败!函数原型BOOLReadProcessMemory(  HANDLEhProcess,  //目标进程句柄  LPCVOIDlpBaseAddress,                    //读取数据的起始地址  LPVOIDlpBuffer,  //存放数据的缓存区地址 

    2022年9月28日
    2
  • Mysql表分区_oracle表分区优缺点

    Mysql表分区_oracle表分区优缺点一、MySQL分区表介绍分区是一种表的设计模式,正确的分区可以极大地提升数据库的查询效率,完成更高质量的SQL编程。但是如果错误地使用分区,那么分区可能带来毁灭性的的结果。分区功能并不是在存储引擎层完成的,因此不只有InnoDB存储引擎支持分区,常见的存储引擎MyISAM、NDB等都支持分区。但是并不是所有的存储引擎都支持,如CSV、FEDORATED、MERGE等就不支持分区。在

    2022年5月3日
    70
  • autoconf 英文手册

    autoconf 英文手册1IntroductionAphysicist,anengineer,andacomputerscientistwerediscussingthenatureofGod.“SurelyaPhysicist,”saidthephysicist,“becauseearlyintheCreation,GodmadeLight;and…

    2022年6月4日
    36

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号