欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

模拟登陆 保存cookie 怎么让登陆网站的时候带着这个cookie访问?

程序员文章站 2024-01-03 16:58:04
...
第一步:在我自己的本地(127.0.0.1) 模拟登陆一个网站 获取到cookie 保存在本地。
第二步:当我正常访问这个网站(http://xxxxxshequ.com) 带着我保存在本地的cookie
朋友做营运 切换很多小号 手动登陆 搞得很麻烦
想让他轻松些 第一步实现起来很简单 主要是第二步有什么办法实现吗?

回复内容:

第一步:在我自己的本地(127.0.0.1) 模拟登陆一个网站 获取到cookie 保存在本地。
第二步:当我正常访问这个网站(http://xxxxxshequ.com) 带着我保存在本地的cookie
朋友做营运 切换很多小号 手动登陆 搞得很麻烦
想让他轻松些 第一步实现起来很简单 主要是第二步有什么办法实现吗?

基于 PHP/CURL 编写的类库, 使用方法见注释.
直接使用, 不用处理Cookie(程序自动会处理, Cookie信息保存于调用类时传递的参数所指定的文件里).

phpSetReferer('http://foo.com');//set request referer
 * echo $http->Get('http://foo.com/');//get
 * $http->SetProxy('http://127.0.0.1:8888');//set http proxy
 * echo $http->Post('http://bar.com/xxx', array('a'=>'123', 'b'=>'456'));//post
 **/

class HttpClient{
    private $ch;

    function __construct($cookieJar){
        $this->ch = curl_init();
        curl_setopt($this->ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36');//UA
        curl_setopt($this->ch, CURLOPT_TIMEOUT, 60);//timeout
        curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, TRUE);//follow redirection
        curl_setopt($this->ch, CURLOPT_AUTOREFERER, true);
        curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, TRUE);
        curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, FALSE);//ssl
        curl_setopt($this->ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($this->ch, CURLOPT_COOKIEJAR, $cookieJar);//cookie jar
        curl_setopt($this->ch, CURLOPT_COOKIEFILE, $cookieJar);
    }

    function __destruct(){
        curl_close($this->ch);
    }

    final public function SetProxy($proxy='http://127.0.0.1:8888'){
        //curl_setopt($this->ch, CURLOPT_HTTPPROXYTUNNEL, TRUE);
        curl_setopt($this->ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);//HTTP proxy
        //curl_setopt($this->ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5);//Socks5 proxy
        curl_setopt($this->ch, CURLOPT_PROXY, $proxy);
    }

    final public function SetReferer($ref=''){
        if($ref != ''){
            curl_setopt($this->ch, CURLOPT_REFERER, $ref);//Referrer
        }
    }

    final public function SetCookie($ck=''){
        if($ck != ''){
            curl_setopt($this->ch, CURLOPT_COOKIE, $ck);//Cookie
        }
    }

    final public function Get($url, $header=false, $nobody=false){
        curl_setopt($this->ch, CURLOPT_POST, false);//GET
        curl_setopt($this->ch, CURLOPT_URL, $url);
        curl_setopt($this->ch, CURLOPT_HEADER, $header);//Response Header
        curl_setopt($this->ch, CURLOPT_NOBODY, $nobody);//Response Body
        return curl_exec($this->ch);
    }

    final public function Post($url, $data=array(), $header=false, $nobody=false){
        curl_setopt($this->ch, CURLOPT_URL, $url);
        curl_setopt($this->ch, CURLOPT_HEADER, $header);//Response Header
        curl_setopt($this->ch, CURLOPT_NOBODY, $nobody);//Response Body
        curl_setopt($this->ch, CURLOPT_POST, true);//POST
        curl_setopt($this->ch, CURLOPT_POSTFIELDS, http_build_query($data));//data
        return curl_exec($this->ch);
    }

    final public function getError(){
        return curl_error($this->ch);
    }
}

// vim: noexpandtab tabstop=4 shiftwidth=4 softtabstop=4:

参考:
http://www.piaoyi.org/php/php-curl-cookies.html
http://*.com/questions/12885538/php-curl-and-cookies

相关标签: php curl java

上一篇:

下一篇: