zoukankan      html  css  js  c++  java
  • python模拟浏览器发送http消息(更新:关于cookie的管理)

          python自带的urllib,urllib2可以极方便做http操作,在我们按照http方式提交消息请求后,有可能会看见返回这个错误“403 forbidden",这是请求的网站做了阻止,于是我们需要把自己伪装成模拟器。对此,可以加上headers={'User-Agent':user-agent,'cookie':cookie},注意操作的网站 需要登录账号的话,就需要加上cookie,这两个值可以通过chrome的”开发者工具“查看:

    把他们加上去,然后在请求值那里再加上:

    req = urllib2.Request(url = req_url,data = trans_data_urlencode,headers=headers)

    这样就可以模拟浏览器发送消息了

    ==========================我是技能升级的分割线=====================================================

    以前曾经写到的是从控制台里截取cookie,添加到代码里,为了更加地自动化,可以使用cookielib来管理cookie

    def getCookie(get_cookie_url):
      '''
      @功能:获取cookie,并存储在cookieJar进行管理
      '''
      cj = cookielib.CookieJar()
      opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
      urllib2.install_opener(opener)
      resp = urllib2.urlopen(get_cookie_url)


    这里就把urllib2与cookie绑在一起,之后做的每个请求都会带上cookie了,get_cookie_url这个请求的url是返回值能够带有cookie的url就可以了。

    这种情况是我们使用cookielib来获取cookie并自动管理,那么当我们有已知的cookie,怎么添加呢?

    def make_cookie(name,value,domain):
      '''
      @功能:写入cookie
      '''
      return cookielib.Cookie(
        version=0,
        name=name,
        value=value,
        port=None,
        port_specified=False,
        domain=domain,
        domain_specified=True,
        domain_initial_dot=False,
        path="/",
        path_specified=True,
        secure=False,
        expires=None,
        discard=False,
        comment=None,
        comment_url=None,
        rest=None
      )

    可以先写个make_cookie的函数,里边参数比较多,有些默认就好。然后同样地把urllib2和cookie绑定在一起:

    cj = cookielib.CookieJar()
    opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
    urllib2.install_opener(opener)

    #接着用cj来set cookie

    cj.set_cookie(make_cookie(name,value,domain))

  • 相关阅读:
    使用kbmMW#1轻松实现REST
    kbmMW集成JWT
    kbmMW TkbmMWHashSHA256与Delphi 10.2 THashSHA2算出相同的结果
    REST easy with kbmMW #14 – DB Controlled login
    java的三种随机数生成方式
    Java中如何获取一个类中泛型的实际类型
    java格式化时间到毫秒
    Java Base64Utils ----Utils
    file 从InputStream读取byte[]示例
    Java四种引用类型
  • 原文地址:https://www.cnblogs.com/tanliyu/p/4281403.html
Copyright © 2011-2022 走看看