程序模拟cookie登陆

  • 通过PHP实现 – curl实现

          重要的有两点,第一点就是设置CURLOPT_COOKIEJAR参数,将登陆后服务端返回的cookie保存到本地,以便之后使用。

           

    
    
    
    
$cookieFile = ' ./php_cookie.txt ' ; // 保存cookie curl_setopt( $ch , CURLOPT_COOKIEJAR , $cookieFile );

            第二点就是将之前抓到cookie随请求一起发到服务器,就可以做一些登陆后才可以做的事了

             

    
    
    
    
curl_setopt( $ch , CURLOPT_COOKIEFILE , $cookieFile );
   

  • 通过python实现

           通过cookielib获取cookie的内容

          
    
    
    
    
import sys from urllib import urlencode import cookielib, urllib2 def get_cookie(): ''' 获取cookie Jar,用于登陆 ''' # 定义保存cookie的文件名 cookiefile = " ./cookies.txt " cookies = cookielib.MozillaCookieJar(cookiefile) try : # 如果cookie文件还没有过期 cookies.load(ignore_discard = True, ignore_expires = True) except Exception: # cookie已经过期,重新登陆获取cookie opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookies)) urllib2.install_opener(opener) opener.addheaders = [ ( " User-agent " , " Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031107 Debian/1.5-3 " ), ( " Accept " , " text/html, image/jpeg, image/png, text/*, image/*, */* " )] # 设置参数 UserName = ' xxx ' Password = ' xxx ' # post数据处理 data = { ' username ' : UserName, ' password ' : Password, ' submit ' : True, } urldata = urlencode(data) # 进行登入操作 r = opener.open(you_url, urldata) results = r.read() # 返回内容写入文件查看 open( ' start.html ' , ' w ' ).write(results) # 最重要的一步,保存登陆cookie cookies.save(cookiefile,ignore_discard = True, ignore_expires = True) # 返回cookie Jar return cookies

        然后读取cookie文件,干一些登陆后该干的事去

       
    
    
    
    
# 获取cookie Jar,配置urlopen cookies = get_cookie() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookies)) urllib2.install_opener(opener) opener.addheaders = [ ( " User-agent " , " Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031107 Debian/1.5-3 " ), ( " Accept " , " text/html, image/jpeg, image/png, text/*, image/*, */* " )] # 设置参数 data = { ' xxx ' : 0, ' xxx ' : ' good week! ' } urldata = urlencode(data) r = opener.open(do_url, urldata) results = r.read() # 信息写入文件查看 open( ' message.html ' , ' w ' ).write(results)

你可能感兴趣的:(cookie,curl,模拟登陆,cookielib)