中国建设银行官方网站汇率,江西网站设计方案,怎么做淘宝客导购网站推广,长沙网站搭建首选智投未来处理更高级操作时(Cookies处理#xff0c;代理设置)#xff0c;需要一个强大的工具Handler#xff0c;可以理解成各种处理器#xff0c;有处理登录认证的、有处理Cookies的、有处理代理设置的。利用这些几乎可以做到HTTP请求中所有事情。当中urllib.request模块里的 BaseHa…处理更高级操作时(Cookies处理代理设置)需要一个强大的工具Handler可以理解成各种处理器有处理登录认证的、有处理Cookies的、有处理代理设置的。利用这些几乎可以做到HTTP请求中所有事情。当中urllib.request模块里的 BaseHandler类是所有其他Handler的父类提供了最基本的方法。如default_open()、protocol_request()等。HTTPdefaultErrorHandler: 用于处理HTTP响应错误错误会抛出HTTPError类型异常
HTTPRedirectHandler: 用于处理重定向
HTTPCookieProcessor: 用于处理Cookies
ProxyHandler: 用于设置代理默认为空
HTTPPasswordMgr: 用于管理密码维护了用户名和密码的表
HTTPBacisAuthHandler: 用于管理认证弱一个链接打开需要认证可以用它解决认证问题代理ProxyHandler的使用代理的常用功能突破自身ip访问限制访问国外站点。访问一些单位或团体内部资源。提高访问速度 通常代理服务器都设置一个较大的硬盘缓冲区当有外界信息通过时同时也将其保存到缓冲区。浏览器向代理服务器发出请求当代理服务器接收请求信息号再由代理服务器来取回浏览器所需要的信息并传送给终端用户的浏览器。隐藏真实ip免受攻击。from http.client import HTTPResponse
from urllib import request
from urllib.request import ProxyHandler, Requesturl http://httpbin.org/ip
headers [(User-Agent,Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36)]
username YOUR_USERNAME
password YOUR_PASSWORD
ip YOUR_IP # 例127.0.0.1
port 66666 # 例30000
ip_port f{ip}:{port}
handler ProxyHandler({http: fhttp://{username}:{password}{ip_port}})
opener request.build_opener(handler)
opener.addheaders headers
response opener.open(url) # type: HTTPResponseprint(response.read().decode(utf-8))另一个常用类OpenerDirector也叫Openerurlopen()就可以看做是urllib提供的一个Opener。前面的Rquest和urlopen相当于类库封装好的常用的请求方法可以完成基本的请求但要实现更高级操作需要深入一层配置。所以需要用到Opener。Cookies获取CookieJar类的子类CookieJar管理HTTP cookie值、存储HTTP请求生成的cookie、向传出的HTTP请求添加cookie的对象。整个cookie都存储在内存中对CookieJar实例进行垃圾回收后cookie也将丢失。FileCookieJar从CookieJar派生而来用来创建FileCookieJar实例检索cookie信息并将cookie存储到文件中。filename是存储cookie的文件名。delayload为True时支持延迟访问访问文件即只有在需要时才读取文件或在文件中存储数据。MozillaCookieJar从FileCookieJar派生而来创建与Mozilla浏览器 cookies.txt兼容的FileCookieJar实例。LWPCookieJar从FileCookieJar派生而来创建与libwww-perl标准的 Set-Cookie3 文件格式兼容的FileCookieJar实例。from http.client import HTTPResponse
from urllib import request, parse
from urllib.request import Request, HTTPCookieProcessor
from http.cookiejar import CookieJar
from io import BytesIO
import gzipcookiejar CookieJar()login_url https://www.mac123.vip/ajax/login_h.jspheaders {user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36
}data cmdXXXXXXX_loginMemberencryptAcctVVVVVVVVVVVVVVpwd123456789000909090899089089089captchaautoLoginfalsereq Request(login_url, datadata.encode(utf-8), headersheaders)
handler HTTPCookieProcessor(cookiejar)
opener request.build_opener(handler)
response opener.open(req) # type: HTTPResponseprint(response.read().decode(utf-8))
print(response.info().get_content_charset())####################以下代码是查看登录信息的url的页面的获取#######################
info_url https://www.mac123.vip/mCenter.jsp
info_req Request(info_url, headersheaders)
info_response opener.open(info_req) # type: HTTPResponse
data_bytes info_response.read()
bytes BytesIO(data_bytes)
f gzip.GzipFile(fileobjbytes)
print(f.read().decode(utf-8))备注获取登录信息的时候https://www.mac123.vip/ajax/login_h.jsp的请求页面返回是压缩后的页面需要gzip.GzipFile进行解压后进行解码操作。CookieJar之cookie保存本地和读取cookie保存from http.client import HTTPResponse
from urllib import request
from urllib.request import Request, HTTPCookieProcessor
from http.cookiejar import MozillaCookieJarcookiejar MozillaCookieJar(cookie.txt)url http://httpbin.org/cookies/set/course/China
headers {user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36
}
req Request(url, headersheaders)
handler HTTPCookieProcessor(cookiejar)
opener request.build_opener(handler)
response opener.open(req) # type: HTTPResponse
print(response.read().decode(utf-8))
cookiejar.save()发现读取不到原因是因为该接口设置的cookie仅浏览时存储。解决方法是cookiejar.save()将两个参数设置为True即可解决from http.client import HTTPResponse
from urllib import request
from urllib.request import Request, HTTPCookieProcessor
from http.cookiejar import MozillaCookieJarcookiejar MozillaCookieJar(cookie.txt)url http://httpbin.org/cookies/set/course/China
headers {user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36
}
req Request(url, headersheaders)
handler HTTPCookieProcessor(cookiejar)
opener request.build_opener(handler)
response opener.open(req) # type: HTTPResponse
print(response.read().decode(utf-8))
cookiejar.save(ignore_discardTrue, ignore_expiresTrue)