zoukankan      html  css  js  c++  java
  • python3 requests 使用proxy代理 ,cookies

    proxy代理 (通用代理)

    import requests
    
    url='http://docs.python-requests.org/en/master/'
    proxies={
    'http':'127.0.0.1:8080',
    'https':'127.0.0.1:8080'
    }
    r = requests.get(url,proxies=proxies)
    print(r.status_code)

    proxy代理 (私密代理)

    'http':'sea:123@127.0.0.1:8080',
    import requests
    
    url='http://docs.python-requests.org/en/master/'
    user="sea"
    password="123" proxies={ 'http':user+':'+password+'@127.0.0.1:8080', 'https':user+':'+password+'@127.0.0.1:8080' } r = requests.get(url,proxies=proxies) print(r.status_code)

    cookies 参考:https://www.cnblogs.com/ddddfpxx/p/8624715.html

    利用POST发送用户名、密码及验证码。这里的验证码没有进行识别,只好先读取验证验图片,手动输入。

    获取cookies:

        

    def GetCookie():
        imgUrl='http://***/authcode.php'
        s=requests.session()
        print(s.cookies.get_dict())#先打印一下,此时一般应该是空的。
        res=s.get(imgUrl,stream=True)
        im=Image.open(BytesIO(res.content))
        im.show()
        code=input()
        loginUrl='http://***/admin_loginCheck.php'
        postData={'pname':'admin','password':'***','validateCode':code}
        rs=s.post(loginUrl,postData)
        c=requests.cookies.RequestsCookieJar()#利用RequestsCookieJar获取
        c.set('cookie-name','cookie-value')
        s.cookies.update(c)
        print(s.cookies.get_dict())

    这种获取cookies后,然后带cookies 请求, 时长并没有什么用

    推荐这种: 先登录获取cookies 然后通过带上cookies访问:

    第2种 先发送post请求,获取cookie,带上cookie请求登陆之后的页面
    这里要用到一个seesion类,seesion 实例具有的方法和requests一样,但是 seesion具有保持功能, 就类似浏览器输入一次密码之后,会自动保留cookie
    
    seesion = requests.seesion()
    seesion.post(url, data, headers) # 服务器设置在本地的cookie会保存在本地
    seesion.get(url) # 会带上之前保存在seesion中的cookie,能够请求成功
    这种方法要先提交自己的账号密码,并且要找到提交的地址。那么如何找到提交地址呢? 
    第一种方式:找form表单的action属性 
    
    原文链接:https://blog.csdn.net/williamgavin/article/details/81390014
    import requests
    
    headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36"}
    
    seesion = requests.session()
    
    # 因为人人网有from表单,所以可以直接找地址:http://www.renren.com/PLogin.do
    # 如果没有的就要抓包了
    
    post_url = "http://www.renren.com/PLogin.do"    # form表单里面直接找到的
    #post_url = "http://www.renren.com/ajaxLogin/login?
    # 用户名作为键, 真正的密码作为值  模拟登陆
    post_data = {"email":"xxxx", "password":"xxxx"}
    seesion.post(post_url, headers = headers, data = post_data)
    
    url = "再次请求登陆的url"
    
    response = seesion.get(url, headers = headers)
    
    with open("renren3.html", "w", encoding="utf-8") as f:
        f.write(response.content.decode())
    
    原文链接:https://blog.csdn.net/williamgavin/article/details/81390014
  • 相关阅读:
    SQL语句
    [Tips] FTP服务器设置
    [Tips] filezilla连接成功,但是读取列表失败
    [Tips] 安装支持树莓派4b的系统
    [Tips] Ubuntu添加硬盘
    [Tips] BMC添加硬盘并进行raid1设置
    [Tips] docker 中遇到fork/exec /bin/sh: operation not permitted错误
    vue elementui el-cascader级联选择器没子级时出现暂无数据问题
    vue复选框勾选的内容,点击分页之后勾选的状态仍然保存。
    下载导出内容,带类型的//////下载,打印,下载源文件,不加mime类型
  • 原文地址:https://www.cnblogs.com/lshan/p/11878638.html
Copyright © 2011-2022 走看看