国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

使用php-curl模擬登陸中國(guó)田徑協(xié)會(huì)查詢自己的馬拉松成績(jī)

zorpan / 574人閱讀

摘要:以下是我操作的具體代碼釋放資源對(duì)象,會(huì)很占用內(nèi)存最后我們得到的數(shù)據(jù)結(jié)構(gòu)如下前端的話,用的很亂,妹子都用了,正真的放一些代碼吧每一項(xiàng)都要填寫未查詢到成績(jī)?cè)僭囋嚢煞?wù)器開小差啦稍后再試

1、線上demo

http://demo.blueyian.top/mara...
完整的代碼包請(qǐng)上gayhub取用。覺得有用的可以給個(gè)star :)
地址:https://github.com/KongYian/m...

2、截圖 2.1、首頁

2.2、查詢結(jié)果

3、實(shí)現(xiàn) 3.1、分析目標(biāo)網(wǎng)站

我們的目標(biāo)是http://www.runchina.org.cn/po... 因此先來分析一下此網(wǎng)站是如何實(shí)現(xiàn)成績(jī)查詢。
多嘗試輸入幾次自己的查詢信息,打開F12觀察NetWork和Application里面的數(shù)據(jù),我們可以簡(jiǎn)單的判斷出查詢的大致流程如下圖:

在反復(fù)試驗(yàn)的過程和檢查中,我們會(huì)發(fā)現(xiàn)這個(gè)網(wǎng)站木有什么CRSF等保護(hù),除了一個(gè)+-*/的驗(yàn)證碼,其他就是一個(gè)赤裸裸的接口了。

3.2、流程

在實(shí)際做的過程中,我將第一步和第二步放在一起作為了一個(gè)接口(命名為-- 接口1)。獲取驗(yàn)證碼圖片和PHPSESSIONID,代碼如下:
其中關(guān)鍵操作在代碼注釋中--

.*)/",$line,$sessionArr);
fclose($handle);
$session = trimall($sessionArr["right"]," ");
$sessionString = "PHPSESSID=".$session.";";
$res = curlLogin($query_url,$cookie_file,$sessionString);

preg_match_all("/Set-Cookie:(.*);/iU",$res,$out);
$tmp = implode(";",$out[1]);

$cookieString = $sessionString.$tmp; //此變量圍第二次請(qǐng)求使用的cookie值
echo json_encode(["data"=>$cookieString]);
exit;

function trimall($str)//刪除空格
{
    $oldchar=array(" "," ","	","
","
");
    $newchar=array("","","","","");
    return
        str_replace($oldchar,$newchar,$str);
}

function showAuthcode( $authcode_url,$cookieFile)
{
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $authcode_url);
    curl_setopt($curl, CURLOPT_COOKIEJAR, $cookieFile);
    //將獲取的cookie以文件的形式保存
    curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36");
    curl_setopt($curl, CURLOPT_HEADER, 0);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $img = curl_exec($curl);
    curl_close($curl);
    $fp = fopen("../image/verifyCode.jpg","w");
    //獲取驗(yàn)證碼的圖片
    fwrite($fp,$img);
    fclose($fp);
}

function curlLogin($url,$cookiefile,$session)
{
    $headers = [
        "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
        "Accept-Encoding:gzip, deflate",
        "Accept-Language:zh-CN,zh;q=0.9",
        "Connection:keep-alive",
        "Cookie:".$session,
        "Host:www.runchina.org.cn",
        "Upgrade-Insecure-Requests:1",
        "User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36",
    ];
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_ACCEPT_ENCODING, "gzip, deflate, sdch");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0");
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile);
    //用請(qǐng)求驗(yàn)證碼接口獲取的cookie作為本次請(qǐng)求的set-cookie 獲取新的cookie文件,但是這里我們沒有以文件形式存儲(chǔ)而是直接輸出,這樣避免了多次文件IO的消耗。
    curl_setopt($ch, CURLOPT_NOBODY, true);
    curl_setopt($ch, CURLOPT_HEADER, true);
    $contents = curl_exec($ch);
    curl_close($ch);
    return $contents;
}

我們從接口一獲取到了要用的cookieString和驗(yàn)證碼的圖片,下面就來模擬表單提交了,模擬提交的代碼如下:

$query_url = "http://www.runchina.org.cn/portal.php?mod=score&ac=personal";
$idnum = $_POST["idnum"];
$name = $_POST["name"];
$code = $_POST["code"];
$cookie = $_POST["cookie"];
$params = [
    "idnum"=>$idnum,
    "name"=>$name,
    "captcha_code"=>$code
];
$https = query($query_url,$params,$cookie);

function query($query_url,$params,$cookie){
    $headers = [
        "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
        "Accept-Encoding:gzip, deflate",
        "Accept-Language:zh-CN,zh;q=0.9",
        "Connection:keep-alive",
        "Cookie:".$cookie,
        "Host:www.runchina.org.cn",
        "Upgrade-Insecure-Requests:1",
        "User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36",
    ];

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $query_url);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    $resp = curl_exec($ch);
    curl_close($ch);
    return $resp;
}

function trimall($str)//刪除空格
{
    $oldchar=array(" "," ","	","
","
");
    $newchar=array("","","","","");
    return
        str_replace($oldchar,$newchar,$str);
}

變量$https便是我們請(qǐng)求的結(jié)果了,如果正確的話是一個(gè)結(jié)果頁面,如果沒有數(shù)據(jù)或者出錯(cuò)的話則沒有數(shù)據(jù)了。
拿到頁面之后,我們就可以來操作dom了,這里我用的是‘simple_html_dom’,具體如何食用可以google一下。以下是我操作的具體代碼:

require_once "simple_html_dom.php";
$htmlDom = str_get_html($https);

$out = [];
foreach($htmlDom->find(".myScore tbody tr") as $kk => $e) {
    if($kk != 0){
        foreach ($e->children as $k => $child) {
            switch ($k){
                case 0: $out[$kk]["date"] = $child->plaintext ;break;
                case 1: $out[$kk]["name"] = trimall($child->plaintext) ;break;
                case 2: $out[$kk]["type"] = trimall($child->plaintext) ;break;
                case 3:
                    $out[$kk]["raceNetTime"] = $child->plaintext ;
                    if(strpos($out[$kk]["raceNetTime"],"PB") !== false){
                        $out[$kk]["pbColor"] = "pink";
                    }else{
                        $out[$kk]["pbColor"] = "";
                    }
                    break;
                case 4:$out[$kk]["raceTrueTime"] = $child->plaintext ;break;
//                case 5: $out[$kk]["raceDetailTime"] = trimall($child->innertext) ;break;
            }
        }
    }
}
//釋放資源對(duì)象,會(huì)很占用內(nèi)存
$htmlDom->clear();
unset($htmlDom);

最后我們得到的數(shù)據(jù)結(jié)構(gòu)如下:

前端的話,用的很亂,vue,jq,layer,妹子UI都用了,正真的demo...
放一些JS代碼吧:

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/92259.html

相關(guān)文章

  • 使用php-curl模擬登陸中國(guó)田徑協(xié)會(huì)查詢自己拉松成績(jī)

    摘要:以下是我操作的具體代碼釋放資源對(duì)象,會(huì)很占用內(nèi)存最后我們得到的數(shù)據(jù)結(jié)構(gòu)如下前端的話,用的很亂,妹子都用了,正真的放一些代碼吧每一項(xiàng)都要填寫未查詢到成績(jī)?cè)僭囋嚢煞?wù)器開小差啦稍后再試 1、線上demo http://demo.blueyian.top/mara...完整的代碼包請(qǐng)上gayhub取用。覺得有用的可以給個(gè)star :)地址:https://github.com/KongYia...

    wenshi11019 評(píng)論0 收藏0
  • 應(yīng)對(duì)惡劣網(wǎng)絡(luò)環(huán)境,為php-curl設(shè)置超時(shí)限制,防止服務(wù)器卡死

    摘要:引發(fā)什么問題了呢最核心的問題是香港處在國(guó)際網(wǎng)絡(luò)環(huán)境,訪問大陸服務(wù)器時(shí)經(jīng)常會(huì)出現(xiàn)網(wǎng)絡(luò)抖動(dòng)的現(xiàn)象,非常無解。其中,負(fù)責(zé)配置,則負(fù)責(zé)執(zhí)行即真正發(fā)送請(qǐng)求。 挖洋貨這項(xiàng)目,因?yàn)闆]有公司的名頭,也就無法備案,所以前端機(jī)放在阿里云香港ECS,另配一臺(tái)阿里云杭州ECS來跑crontab——執(zhí)行爬蟲、保存圖片到阿里云OSS等。最近覺得杭州ECS有點(diǎn)多余了(原本還有個(gè)杭州RDS的,統(tǒng)一搬到香港RDS了),...

    Faremax 評(píng)論0 收藏0
  • 二魚和我,武漢,黑客拉松

    摘要:文中提到的每一位,都是為武漢黑客馬拉松,為武漢的互聯(lián)網(wǎng)貢獻(xiàn)著自己的那份熱情。武漢公司員工基本全體出動(dòng),全程參與,提供支持。今年的武漢黑客馬拉松是第二屆,因?yàn)橛卸~的這份執(zhí)著,第二屆武漢黑客馬拉松才得以舉辦。 這個(gè)標(biāo)題,不講章法,我想從個(gè)人的視角來還原一下,一周前的黑客馬拉松和我們對(duì)她的那份執(zhí)著。文中提到的每一位,都是為武漢黑客馬拉松,為武漢的互聯(lián)網(wǎng)貢獻(xiàn)著自己的那份熱情。 我們我(吉佳盛...

    RobinQu 評(píng)論0 收藏0
  • 二魚和我,武漢,黑客拉松

    摘要:文中提到的每一位,都是為武漢黑客馬拉松,為武漢的互聯(lián)網(wǎng)貢獻(xiàn)著自己的那份熱情。武漢公司員工基本全體出動(dòng),全程參與,提供支持。今年的武漢黑客馬拉松是第二屆,因?yàn)橛卸~的這份執(zhí)著,第二屆武漢黑客馬拉松才得以舉辦。 這個(gè)標(biāo)題,不講章法,我想從個(gè)人的視角來還原一下,一周前的黑客馬拉松和我們對(duì)她的那份執(zhí)著。文中提到的每一位,都是為武漢黑客馬拉松,為武漢的互聯(lián)網(wǎng)貢獻(xiàn)著自己的那份熱情。 我們我(吉佳盛...

    Jonathan Shieber 評(píng)論0 收藏0
  • 微軟“三朵云”在華團(tuán)聚,能否改變?cè)剖袌?chǎng)格局?

    摘要:月日微軟宣布,其智能云的第三項(xiàng)核心服務(wù),由世紀(jì)互聯(lián)運(yùn)營(yíng)的智能商業(yè)云平臺(tái)月日正式商用。至此,微軟智能云三駕馬車在中國(guó)團(tuán)聚。在不少業(yè)內(nèi)人士眼中,三朵云的遙相呼應(yīng),彼此共振尤其是的空降,將成為擾動(dòng)中國(guó)云端格局的最重要一股變量。時(shí)至今日,已很少有人懷疑,就像第二次工業(yè)革命后人們用用電量衡量一個(gè)區(qū)域的文明程度一樣,如今用云量已成為判斷一家企業(yè)智能化水準(zhǔn)的關(guān)鍵指標(biāo)。根據(jù)Canalys報(bào)告顯示,2018年...

    whlong 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<