目錄
回复讨论(解决方案)
首頁 後端開發 php教程 php模拟登陆163邮箱失败,求解

php模拟登陆163邮箱失败,求解

Jun 20, 2016 pm 12:37 PM

<?phpfunction curl($url,$cookiefile=0,$cookiejar=0,$httpheader=0,$referer="http://baidu.com",$follow=0,$header=1,$postdata=0,$cookiearr=ARRAY(),$proxy=0,$outtime=20000,$UA=0){		$ch = curl_init();		curl_setopt ( $ch, CURLOPT_NOSIGNAL,true);//开启毫秒超时		curl_setopt($ch, CURLOPT_TIMEOUT_MS, $outtime);//10s超时			curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);			curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);		curl_setopt($ch, CURLOPT_URL,$url) ;		if($UA==0){			curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36');		}else{			curl_setopt($ch, CURLOPT_USERAGENT,$UA);		}		curl_setopt($ch, CURLOPT_REFERER, $referer);       //伪装REFERER		curl_setopt($ch, CURLOPT_HEADER, $header);		if($httpheader){			curl_setopt($ch, CURLOPT_HTTPHEADER, $httpheader);		}		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);		curl_setopt ( $ch, CURLOPT_COOKIESESSION, true );		if($follow){			curl_setopt($ch, CURLOPT_FOLLOWLOCATION,$follow);//跟随重定向		}		//读取cookie		//foreach($cookiearr as $c){			//echo $c;		//	curl_setopt($ch,CURLOPT_COOKIE,$cookiearr[0]);		//}		if($cookiefile){			curl_setopt($ch, CURLOPT_COOKIEFILE,$cookiefile);		}		if($postdata){			curl_setopt($ch, CURLOPT_POST, 1);			curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);		}else{			curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');		}		 curl_setopt($ch, CURLINFO_HEADER_OUT, true);//开启返回请求头查看		//保存cookie		if($cookiejar){			curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiejar);		}		//代理		if($proxy){			curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_BASIC); //代理认证模式			curl_setopt($ch, CURLOPT_PROXY, $proxy['ip']); //代理服务器地址			curl_setopt($ch, CURLOPT_PROXYPORT,$proxy['port']); //代理服务器端口			curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP); //使用http代理模式		}		$content=curl_exec($ch);		if($content === false){   			 $content= 'Curl error: ' . curl_error($ch);		}		$info=curl_getinfo($ch);		$result[1]=$content;		$result[0]=$info;		curl_close($ch);		return $result;}//首次访问mail.163.com没有产生任何cookie/$url="https://mail.163.com/entry/cgi/ntesdoor?df=mail163_letter&from=web&funcid=loginone&iframe=1&language=-1&passtype=1&product=mail163&net=t&style=-1&race=468_528_417_gz&uid=qianxi770231@163.com";//貌似race参数是记录来源	$httpheader = array(		'Cookie: starttime=1454514129882; logType=; nts_mail_user=qianxi770231:-1:1; df=mail163_letter',	);//貌似starttime就是js里面的gettiem();//$postdata['savelogin']=1;$postdata['url2']="http://mail.163.com/errorpage/error163.htm";$postdata['username']="qianxi770231";//这邮箱可以使用$postdata['password']="ziyanpuye";$cookie ="cookie.txt";$content= curl($url,0,$cookie,$httpheader,"http://mail.163.com/",0,1,$postdata);print_r($content);//	echo $content[1];	$fp = @fopen("Log.html", "w"); //记录捕获到的页面源码fwrite($fp,$content[1]); fclose($fp); 
登入後複製


//目前本人技术只能做到这里,,无法模拟成功登陆,
//上面的邮箱可以使用,,求好心人帮忙解决。。


回复讨论(解决方案)

参考:

<?php    header("Content-Type: text/html; charset=UTF-8");    error_reporting(0);    /**     * 登陆     * $user 163用户名     * $pass 密码    **/    function login($user,$pass){        //登陆        $url = 'http://reg.163.com/logins.jsp?type=1&url=http://entry.mail.163.com/coremail/fcg/ntesdoor2?lightweight%3D1%26verifycookie%3D1%26language%3D-1%26style%3D-1';              $cookie = tempnam('./cache/','~');//创建一个用于存放cookie信息的临时文件          $fields_post = array(            'username'      => $user,            'password'      => $pass,            'verifycookie'  => 1,            'style'         => -1,            'product'       => 'mail163',            'selType'       => -1,            'secure'        => 'on'        );         $fields_string = '';            foreach($fields_post as $key => $value){            $fields_string .= $key . '=' . $value . '&';        }            $fields_string = rtrim($fields_string , '&');        $headers = array(            'User-Agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/2008052906 Firefox/3.0',            'Referer'    => 'http://www.163.com'        );        $ch = curl_init($url);          curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);//返回结果存放在变量中,而不是默认的直接输出        curl_setopt($ch, CURLOPT_HEADER, true);        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);        curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);//关闭连接时,将服务器端返回的cookie保存在以下文件中         curl_setopt($ch, CURLOPT_POST, true);        curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);               $result= curl_exec($ch);        curl_close($ch);        preg_match_all('/<div class="info" id="eHint">(.*?) <\/div>/i', $result,$infos,PREG_SET_ORDER);        if(!empty($infos['0']['1'])){            unlink($cookie);            exit('<script type="text/javascript">alert("'.$infos['0']['1'].'");history.go(-1);</script>');        }else{                  $G_ROOT = dirname(__FILE__);            file_put_contents($G_ROOT.'/cache/cookie', $cookie);            return $cookie;        }    }    /**     *      * $data['url'] 请求地址     * $data['data_post'] post数据     * $data['cookie']     *    **/    function curl($data){        $url = $data['url'];        $data_post= $data['data_post']? $data['data_post']: false;        $cookie = $data['cookie'];              $headers = array(            'User-Agent'        => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9) Gecko/2008052906 Firefox/3.0',            'Referer'    => 'http://www.163.com'        );        $ch = curl_init($url);           curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);        curl_setopt($ch, CURLOPT_HEADER, true);        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);              curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);        curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);        curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);  //cookie文件 登陆之后         //POST 提交        if($data_post){            curl_setopt($ch, CURLOPT_POST, 1);            curl_setopt($ch, CURLOPT_POSTFIELDS, $data_post);        }        $result = curl_exec($ch);        curl_close($ch);        return $result;    }
登入後複製

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何用Python寫出求解最小公倍數的演算法? 如何用Python寫出求解最小公倍數的演算法? Sep 19, 2023 am 11:25 AM

如何用Python寫出求解最小公倍數的演算法?最小公倍數是指兩個數中能夠整除這兩個數的最小整數。在數學中,求解最小公倍數是一項基本的數學任務,而在電腦程式設計中,我們可以使用Python來寫一個求解最小公倍數的演算法。以下將介紹基本的最小公倍數演算法,並給出具體的程式碼範例。最小公倍數的數學定義是:若a能被n整除且b能被n整除,則n是a和b的最小公倍數。要求解最小

快速計算矩陣逆的方法 - Numpy實現 快速計算矩陣逆的方法 - Numpy實現 Jan 24, 2024 am 08:47 AM

Numpy是Python中著名的科學計算庫,為處理大型多維數組和矩陣提供了豐富的功能和高效的計算方法。在資料科學和機器學習領域,矩陣的逆運算是一項常見的任務。在本文中,我將介紹使用Numpy函式庫快速求解矩陣逆的方法,並提供具體的程式碼範例。首先,讓我們透過安裝Numpy庫引入它到我們的Python環境中。可以使用以下命令在終端機中安裝Numpy:pipinsta

用C語言程式實現最大公約數求解 用C語言程式實現最大公約數求解 Feb 21, 2024 pm 07:30 PM

標題:以C語言程式實現最大公約數求解最大公約數(GreatestCommonDivisor,簡稱GCD)是指能夠同時整除兩個或多個整數的最大正整數。求解最大公約數對於一些演算法和問題解決非常有幫助。在本文中,將透過C語言程式設計來實現求解最大公約數的功能,並提供具體的程式碼範例。在C語言中,可以使用歐幾裡得演算法(EuclideanAlgorithm)來求解最大

如何使用Python實作求解階乘的演算法? 如何使用Python實作求解階乘的演算法? Sep 19, 2023 am 10:30 AM

如何使用Python實作求解階乘的演算法?階乘是數學中的重要概念,指的是一個數乘上其自身減一,再乘上自身減一減一,以此類推,直到乘到1為止。階乘通常以符號"!"來表示,例如5的階乘表示為5!,計算公式為:5!=5×4×3×2×1=120。在Python中,我們可以使用迴圈來實作一個簡單的階乘演算法。下面給一個範例程式碼:deffacto

學習C語言如何求解最大公約數 學習C語言如何求解最大公約數 Feb 21, 2024 pm 11:18 PM

學習C語言如何解最大公約數,需要具體程式碼範例最大公約數(GreatestCommonDivisor,簡稱GCD)是指兩個或多個整數中能夠整除它們的最大正整數。在電腦程式設計中常會用到最大公約數,特別是在處理分數、化簡分數以及求解最簡整數比例等問題時。本篇文章將介紹如何使用C語言來求解最大公約數,並給出具體的程式碼範例。求解最大公約數的方法有很多種,例如歐

在C/C++中寫出求解模方程式的程式? 在C/C++中寫出求解模方程式的程式? Sep 12, 2023 pm 02:21 PM

在這裡,我們將看到一個與模方程式相關的有趣問題。假設我們有兩個值A和B。我們必須找到變數X可以取的可能值的數量,使得(AmodX)=B成立。假設A為26,B為2。所以X的首選值會是{3,4,6,8,12,24},因此計數為6。這就是答案。讓我們看一下演算法以更好地理解。演算法possibleWayCount(a,b)−begin  ifa=b,thenthereareinfinitesolutions  ifa

求第n個斐波那契數的C/C++程式? 求第n個斐波那契數的C/C++程式? Sep 12, 2023 pm 06:01 PM

斐波那契數列是一個數列,其中下一項是前兩項之和。斐波那契數列的前兩項是0後跟1。在這個問題中,我們會發現斐波那契數列中的第n個數字。為此,我們將計算所有數字並列印n項。 Input:8Output:011235813說明0+1=11+1=21+2=32+3=5使用For迴圈將前兩項求和作為下一項範例#include<iostream>usingnamespacestd;intmain(){  intt1= 0,t2=1,n,i,nextTerm;&am

PHP中如何求解2的乘方? PHP中如何求解2的乘方? Mar 28, 2024 am 11:09 AM

標題:PHP中如何求解2的乘方?具體程式碼範例分享在PHP程式設計中,求解數的乘方是一個常見的需求,特別是在一些演算法和數學計算中。本文將詳細探討如何在PHP中求解2的乘方,並提供具體的程式碼範例供大家參考。在PHP中,可以使用冪運算子**來計算乘方。對於2的乘方,即計算$2^n$,其中$n$是乘方的指數。下面我們將透過幾種不同的方法來實現這個計算。方法一:使用**運

See all articles