李成笔记网

专注域名、站长SEO知识分享与实战技巧

爬虫中的代理技术 爬虫代理怎么做

爬虫中的代理技术

代理的使用场景

  1. 需要爬虫高频率地访问某一站点,同时站点又存在着反爬虫措施,会封掉高频率爬取的IP:例如访问得到403 Forbidden之后提示“您的 IP 访问频率太高”或者跳出一个验证码让我们输入,输入之后才可能解封。

2.需要访问境外的网站

代理的设置

爬虫中可以使用多种请求库,如 Requests、Urllib、Selenium 等,下面先梳理一下这些库的代理设置方法。

获取代理

设置代理,首先需要设置一个可用的代理,搜索引擎搜索“代理”关键字,就可以看到有许多代理服务网站,在网站上会有很多免费代理。免费代理大多数情况下都是不好用的,所以比较靠谱的方法是购买付费代理,很多网站都有售卖。或者如果我们本机有相关代理软件的话,软件一般会在本机创建 HTTP 或 SOCKS 代理服务,直接使用此代理也可以。

总结一下,代理的获取方法有两种:

·在网上获取或购买代理来获取的代理IP(如220.187.210.64:8118),在下一部分各个请求库的代理设置中使用该IP即可,而爬虫所带的伪装IP即为代理IP(220.187.210.64:8118);

·在本机安装并运行相关代理软件,这种方式获取的代理IP与启动代理软件时的配置有关——例如,使用V2ray代理软件时它会在本地 10809端口上创建 HTTP 代理服务,也就是说代理IP为 127.0.0.1:10809,另外还会在 10808 端口创建 SOCKS 5代理服务,也就是代理IP为 127.0.0.1:10808。同样,在下一部分各个请求库的代理设置中使用这些代理IP(127.0.0.1:10808,127.0.0.1:10809)即可,而爬虫所带的伪装IP则是代理软件V2ray所连接的服务器 IP.

设置代理后测试的网址是:http://httpbin.org/get,访问该站点可以得到请求的一些相关信息,其中 origin 字段就是客户端的 IP,我们可以根据它来判断代理是否设置成功,也就是是否成功伪装了IP。

Requests

对于 Requests 来说,代理设置比较简单,我们只需要传入 proxies 参数即可。在这里,我们使用本机代理软件创建的HTTP 代理服务,进行Requests 的代理的设置,如下:

1.import requests

2.

3.proxy = '127.0.0.1:10809'

4.proxies = {

5. 'http': 'http://' + proxy,

6. 'https': 'https://' + proxy,

7.}

8.try:

9. response = requests.get('http://httpbin.org/get', proxies=proxies)

10. print(response.text)

11.except requests.exceptions.ConnectionError as e:

12. print('Error', e.args)

如果代理需要认证,同样在代理的前面加上用户名密码即可,代理的写法就变成:

proxy = 'username:password@127.0.0.1:10809'

如果需要使用 SOCKS5 代理,则首先需要安装一个 Socks 模块:

pip3 install "requests[socks]"

同样使用本机运行代理软件的方式,则爬虫设置代理的代码如下:

1.import requests

2.

3.proxy = '127.0.0.1:10808'

4.proxies = {

5. 'http': 'socks5://' + proxy,

6. 'https': 'socks5://' + proxy

7.}

8.try:

9. response = requests.get('http://httpbin.org/get', proxies=proxies)

10. print(response.text)

11.except requests.exceptions.ConnectionError as e:

12. print('Error', e.args)

还有一种使用 socks 模块进行全局设置的方法,如下:

1.import requests

2.import socks

3.import socket

4.

5.socks.set_default_proxy(socks.SOCKS5, '127.0.0.1', 10808)

6.socket.socket = socks.socksocket

7.try:

8. response = requests.get('http://httpbin.org/get')

9. print(response.text)

10.except requests.exceptions.ConnectionError as e:

11. print('Error', e.args)

Selenium

Selenium 也可以设置代理,在设置方法上分有无界面的浏览器两种方法,因此对于有界面浏览器,将以 Chrome 为例介绍;而对于无界面浏览器,以 PhantomJS 为例介绍。

1.Chrome

对于 Chrome 来说,用 Selenium 设置代理的方法也非常简单,设置方法如下:

1.from selenium import webdriver

2.

3.proxy = '127.0.0.1:10809'

4.chrome_options = webdriver.ChromeOptions()

5.chrome_options.add_argument('--proxy-server=http://' + proxy)

6.browser = webdriver.Chrome(chrome_options=chrome_options)

7.browser.get('http://httpbin.org/get')

2.PhantomJS

对于 PhantomJS,代理设置方法可以借助于 service_args 参数,也就是命令行参数;在这里我们只需要使用 service_args 参数,将命令行的一些参数定义为列表,在初始化的时候传递即可。

因此,代理设置方法如下:

1.from selenium import webdriver

2.

3.service_args = [

4. '--proxy=127.0.0.1:10809',

5. '--proxy-type=http'

6.]

7.browser = webdriver.PhantomJS(service_args=service_args)

8.browser.get('http://httpbin.org/get')

9.print(browser.page_source)

如果需要认证,那么只需要再加入 –proxy-auth 选项即可,这样参数就改为:

1.service_args = [

2. '--proxy=127.0.0.1:10809',

3. '--proxy-type=http',

4. '--proxy-auth=username:password'

5.]

将 username 和 password 替换为认证所需的用户名和密码即可。

关于(爬虫中的代理技术)的分享就介绍到这里,感谢您花时间阅读内容,想要了解更多信息可以上(h.shanchendaili.com)闪臣http咨询喔!

本文来源转载

原文链接:爬虫中的代理技术_通过vmess 设置python代理_DC_lullaby的博客-CSDN博客

若有侵权,请联系作者及时删除,谢谢!!

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言