热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

1网络爬虫_设置代理服务器

书目参考:精通Python网络爬虫和Python3网络爬虫实战。这里只给出正确的代码。首先,代理服务器ip的网址是:http:www.xi

书目参考:精通Python网络爬虫和Python3网络爬虫实战。
这里只给出正确的代码。

首先,代理服务器ip的网址是:http://www.xicidaili.com/。这里面有大量的失效IP地址。

其次, http://httpbin.org/get或者https开通的网址可以对是否设置成功进行验证。

实际代码如下:

# -*- coding: utf-8 -*-
"""
Created on Wed Jul 11 15:54:09 2018@author: a
"""#设置正确的代理服务器
from urllib.error import URLError
def use_proxy(proxy_addr,url):import urllib.request#proxy=urllib.request.ProxyHandler({"http":"http://"+proxy_addr,"https":"https://"+proxy_addr})proxy=urllib.request.ProxyHandler({"http":"http://"+proxy_addr})headers=("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.5193.400 QQBrowser/10.0.1066.400")
opener=urllib.request.build_opener(proxy)opener.addheaders=[headers]#print (opener.open(url).getheaders())#print (opener.open(url).info()) try:response=opener.open(url)data=response.read().decode('utf-8')print(data) except URLError as e:print("出现异常")print(e.reason)return data
#获取本机ip地址
import socket
hostname = socket.gethostname()
ip = socket.gethostbyname(hostname)
print ("本机电脑名:",hostname)
print ("本机Ip:",ip)
proxy_addr="101.236.35.98:8866"
data=use_proxy(proxy_addr,"http://httpbin.org/get")
#print (data)
print (len(data))

#也可以opener=urllib.request.build_opener(proxy,urllib.request.HTTPHandler)

#也可以注册opener。

       urllib.request.install_opener(opener)

            response=urllib.request.urlopen(url)

为了确定是否使用的是代理服务器的ip地址,可以将目标url设为: http://httpbin.org/get因为该服务器的response会专门返回客户端使用的ip地址。可以看到:

runfile('G:/精通python网络爬虫/6 代理服务器设置_2.py', wdir='G:/精通python网络爬虫')

本机电脑名: DESKTOP-090FKDS

本机Ip: 192.168.8.100

{"args":{},"headers":{"Accept-Encoding":"identity","Cache-Control":"max-age=259200","Connection":"close","Host":"httpbin.org","User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.5193.400 QQBrowser/10.0.1066.400"},"origin":"101.236.35.98","url":"http://httpbin.org/get"}

352

几个错误

第一个错误

Python3网络爬虫实战书中的错误是:设置Proxyhandler的时候使用的是:

#proxy=urllib.request.ProxyHandler({"http":"http://"+proxy_addr,"https":"https://"+proxy_addr})

即将http和https都设置了。但是这样总是会出现各种问题。

其中,http://www.xicidaili.com/对于各种类型的代理IP是有严格分类的。如果访问http的网址,就用国内http代理IP即可。

第二个错误

写代码的时候没有注意,反复open(url)就会导致报错。

    print (opener.open(url).getheaders())

    print (opener.open(url).info())  

    data=opener.open(url).read().decode('utf-8')

    print(data)

    return data

第三个错误

如果设置的代理是http类型的,访问的是https的网址。这个时候,代理是不起任何作用的。比如,有效的http代理服务器ip是:102.236.35.98:8866。这个时候,你随便改动IP,使用下面的代码,都能正常跑通。

def use_proxy(proxy_addr,url):import urllib.requestproxy=urllib.request.ProxyHandler({"http":"http://"+proxy_addr})print (proxy_addr)headers=("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.5193.400 QQBrowser/10.0.1066.400")opener=urllib.request.build_opener(proxy)opener.addheaders=[headers] data=opener.open(url).read().decode('utf-8')print (data)return data
#获取本机ip地址
import socket
hostname = socket.gethostname()
ip = socket.gethostbyname(hostname)
print ("本机电脑名:",hostname)
print ("本机Ip:",ip)
#proxy_addr="101.236.35.98:8866"
proxy_addr="104.236.35.98:8866"#随便改动ip地址。
data=use_proxy(proxy_addr,"https://www.baidu.com")
#print (data)
print (len(data))

为了验证一下ip地址没有起到任何作用。我们修改url为:https://httpbin.org/get

因为这个url的response是客户端的ip地址,可以看到结果如下:

可以看到本机的ip是192.168.8.100,设置的代理服务器的ip是

104.236.35.98:8866,而服务器端记录的客户端的ip地址是:117.61.138.21.

你继续改动代理服务器的ip地址:可以看到,服务器端记录的客户端ip地址仍然是:117.61.138.21

为什么117.61.138.21和我的本机ip不一样呢。

这是因为我的电脑连接的是wifi热点。所以服务器实际记录的客户端ip地址就不是我的电脑显示的。

转:https://www.cnblogs.com/xiaojieshisilang/p/9296968.html



推荐阅读
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 本文介绍了django中视图函数的使用方法,包括如何接收Web请求并返回Web响应,以及如何处理GET请求和POST请求。同时还介绍了urls.py和views.py文件的配置方式。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 延迟注入工具(python)的SQL脚本
    本文介绍了一个延迟注入工具(python)的SQL脚本,包括使用urllib2、time、socket、threading、requests等模块实现延迟注入的方法。该工具可以通过构造特定的URL来进行注入测试,并通过延迟时间来判断注入是否成功。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 开发笔记:计网局域网:NAT 是如何工作的?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了计网-局域网:NAT是如何工作的?相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 移动端常用单位——rem的使用方法和注意事项
    本文介绍了移动端常用的单位rem的使用方法和注意事项,包括px、%、em、vw、vh等其他常用单位的比较。同时还介绍了如何通过JS获取视口宽度并动态调整rem的值,以适应不同设备的屏幕大小。此外,还提到了rem目前在移动端的主流地位。 ... [详细]
author-avatar
航模特异_831
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有