爬虫隐藏自身的ip并伪装成浏览器

爬虫隐藏自身的ip并伪装成浏览器">爬虫隐藏自身的ip并伪装成浏览器

代理访问">1、使用代理访问

就是说使用代理Ip,代理ip访问url之后,再将网页的内容在传给本机的ip;

'''
使用代理访问
'''
import urllib.request
import random

url = 'http://www.whatismyip.com.tw'

#创建一个iplist,随机使用ip
iplist = ['219.223.251.173:3128','203.174.112.13:3128','122.72.18.34:80']
#创建一个代理opener
proxy_support = urllib.request.ProxyHandler({'http':iplist[random.randint(0, len(iplist))]})
opener = urllib.request.build_opener(proxy_support)

#添加浏览器的伪装头部
opener.addheaders = [('User-Agent','Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0')]

#使用代理opener访问url
response = opener.open(url)


html = response.read().decode('utf-8')
print(html)

伪装成浏览器">2、伪装成浏览器

隐藏————伪装成浏览器
两种方法:
1、通过Request的headers参数修改
2、通过Request.add_header()方法修改
在User-Agent中替换成浏览器的User-Agent

'''
import urllib.request

url = r'http://douban.com'
headers = {'User-Agent':'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0'}

#urllib.request.Request()用于向服务端发送请求,就如 http 协议客户端向服务端发送请求 POST
#添加了一个头部,伪装成浏览器,此时的url并不是一个裸露的url,而是具有header头部的url
req = urllib.request.Request(url=url, headers=headers)

#urllib.request.urlopen()则相当于服务器返回的响应,返回的是一个request类的一个对象, GET
# 类似于一个文件对象,可以进行open()操作获取内容
res = urllib.request.urlopen(req)

html = res.read().decode('utf-8')
print(html)

http://www.niftyadmin.cn/n/1741858.html

相关文章

urllib中的urlopen函数

urlopen返回 一个类文件对象,他提供了如下方法: >参数 url 表示远程数据的路径,一般是 http 或者 ftp 路径。 参数 data 表示以 get 或者 post 方式提交到 url 的数据。 参数 proxies 表示用于代理的设置。urlopen 返回一个类文件对象&am…

正确使用正则表达式

正则表达式的使用 import re#通过re模块,将正则表达式编译成模式对象,用模式对象进行匹配 p re.compile(rab)temp p.match(bcdeabc)#match对象的方法 if None ! temp:print(temp.group()) #返回匹配的字符串print(temp.start()…

Python爬虫获取代理ip及端口

爬取代理ip 可以作为模块使用,在使用代理ip的时候直接调用该模块即可。import re import urllib.requestdef ExtractIP(urlhttp://www.xicidaili.com/):headers {User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:58.0) Gecko/20100101 Firefox/58.0}# url…

python3 正则表达式re.sub()函数

转载自http://blog.csdn.net/mrzhoug/article/details/51585615

Python使用re实现str.strip()方法,去除首尾的空格

主要用到的新知识: ‘d_str’ 对某一个d_str变量中的字符串进行正则匹配 话不多说,先上代码; 类似于str方法中的strip方法 去除首尾两端的指定字符或字符串import redef py_strip(p_str, d_str ):temp re.search(r[^(d_str)].*,p_str).gro…

Ubuntu输入法使用回车键后字符间距异常的问题

问题如下: 使用拼音输入法输入时: 此时使用enter键会出现下面的情况:《字符间距明显变大》 解决方法: 在输入法中找到“全半角切换”,进行切换&#x…

Python:爬虫异常处理URLError HTTPError

爬虫异常处理 URLError HTTPError:是URLError的子类, 所以如果URLError和HTTPError同时出现的话,要将HTTPError写在前面,URLError写在后面 import urllib.request import urllib.errorURLError错误req urllib.request.Request(http://www.12…