request的其他用法和识别验证码

request的其他用法

上传文件

url = 'https://httpbin.org/post'
files = {'file': open('image.png', 'rb')}
response = requests.post(url, files=files)
print(response.text)

Web客户端验证

import requests
auth=('test', '123456')
response = requests.get(
    'http://192.168.199.107', 
    auth = auth
)
print (response.text)

在这里插入代码片

代理设置

import requests
# 根据协议类型,选择不同的代理
proxies = {
    "http": "http://11.44.156.126:4532",
    "https": "http://11.134.156.126:4532",
}
##如果代理需要使用HTTP Basic Auth,(花钱买的代理就用下面这种方式写)可以使用下面这种格式:
'''
proxy = { 
    "http": "name:password@11.134.156.126:4532" 
}
'''

response = requests.get(
    "http://www.baidu.com", 
    proxies = proxies
)
print(response.text)

Cookies

import requests
response = requests.get("https://www.douban.com/")
# 7\. 返回CookieJar对象:
cookiejar = response.cookies
# 8\. 将CookieJar转为字典:
cookiedict = requests.utils.dict_from_cookiejar(
    cookiejar
)
print (cookiejar)
print (cookiedict)

Session

import requests
# 1\. 创建session对象,可以保存Cookie值
ssion = requests.session()
# 2\. 处理 headers
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"
}
# 3\. 需要登录的用户名和密码
data = {
    "email":"18518753265",
    "password":"ljh123456"
}
# 4\. 发送附带用户名和密码的请求,并获取登录后的Cookie值,保存在ssion里
ssion.post(
    "http://www.renren.com/PLogin.do",
    data = data
)
# 5\. ssion包含用户登录后的Cookie值,可以直接访问那些登录后才可以访问的页面
response = ssion.get(
    "http://www.renren.com/965722397/profile"
)
# 6\. 打印响应内容
print (response.text)

用request模拟登录

登录遇到验证码的时候,可以把它拿出来,就不用去网页上看了
import requests
from lxml import etree

sess = requests.session()
url = 'https://fly.layui.com/user/login/'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36',
    'referer': 'https://fly.layui.com/user/login/',
    'cookie': 'fly-layui=s%3Am8VoRAF5HTeLGmPchcNTM3Mtl8PyfSAf.YUmMm7e8RBlmRJNTjXWt0iI%2Fmp5XheYw4XgjOlo8JgM; Hm_lvt_d214947968792b839fd669a4decaaffc=1592814692; Hm_lpvt_d214947968792b839fd669a4decaaffc=1592898217'
}
response = sess.get(url=url,headers=headers)
html = etree.HTML(response.text)
img = html.xpath('//div[@class="layui-form-mid"]/img/@src')[0]
print(img)
#发送请求,拿到验证码,并且保存到本地
response = sess.get(url='https://fly.layui.com'+img,headers=headers)
with open('code.html','wb') as f:
    f.write(response.content)
code = input('请输入验证码')
secret = html.xpath('//div[@class="layui-form-item"]/input/@value')
form_data = {
    'loginName': '2079380582@qq.com',
    'pass': 'l200011280028..',
    'imagecode': code,
    'secret': secret
}
response = sess.post(url=url,data=form_data,headers=headers)
print(response.json())
#这块应该是登录成功了
colection_utl = 'https://fly.layui.com/user/post/#collection'
response = sess.get(url=colection_utl,headers=headers)
print(response.text)

跳过SSL验证

import requests
response = requests.get("https://www.12306.cn/mormhweb/", verify = False)
print (response.text)
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值