get($url); $range = "#ul> .wow"; $rules = [ 'country' => ["h2", "text"], 'link' => ["a", "href"] ]; $_data = $ql->range($range)->rules($rules)->query()->getData()->all(); if ($_data) { $data = array_merge($data, $_data); } } $data = array_map(function ($item) { $item['country'] = trim($item['country']); return $item; }, $data); return $data; } /** * @param $link * @return array */ public function getPhoneNums($link): array { $ql = (new QueryList)->get($link); $end_page_link = $ql->find(".pagination a:contains(End)")->attr("href"); preg_match("#\d+#", $end_page_link, $all_page); $all_page = $all_page[0]; $data = $ql->find(".h2 span")->texts()->all(); $this->insert($link, $data); if ($all_page > 0) { for ($i = 2; $i <= $all_page; $i++) { $url = sprintf($link . "%s.html", $i); $_ql = (new QueryList)->get($url); $_data = $_ql->find(".h2 span")->texts()->all(); if ($_data) { $this->insert($link, $_data); $data = array_merge($data, $_data); } else { echo "总页数:" . $all_page; echo "处理异常: " . $url . PHP_EOL; } } } return $data; } public function getMessage($country, $phone_num): array { $info = Num::getOne(['country' => $country, 'phone' => $phone_num]); if ($info) { // print_r($info); $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => $info['url'], CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', CURLOPT_HTTPHEADER => array( 'authority: receive-sms-free.net', 'cache-control: max-age=0', 'dnt: 1', 'upgrade-insecure-requests: 1', 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36', 'accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9', 'sec-fetch-site: none', 'sec-fetch-mode: navigate', 'sec-fetch-user: ?1', 'sec-fetch-dest: document', 'accept-language: en,zh-CN;q=0.9,zh;q=0.8', 'cookie: SMSSId=aBayAmYhhg9HLHqmViT0jvh%2FGHUbo0QlFET1obfgGD310kML2XzZanFOYbXk950v6yVzgWdaroChz8GyNQbEjCdLj4WBBUmVykTi; __cfduid=d2530c6c2475fe8a930ceda1dcda65b831610621278; _ga=GA1.2.752717170.1610621281; _gid=GA1.2.1285055920.1610621281; UM_distinctid=177008536e6120-07f84d7cecf1fe-326f7007-13c680-177008536e78dc; CNZZDATA1277724716=410208085-1610621466-https%253A%252F%252Freceive-sms-free.net%252F%7C1610621466; __gads=ID=8d8fcd8e633e42c4-22e6a115bfc50000:T=1610872559:RT=1610872559:S=ALNI_MbjZCyvGfLoOil8tWJnEYhSbJB_7Q; SMSSId=aRDmU2Ukhl9HLHqmViT0jvh%2FGHUbo0QlFET1obfgGD310kML2XzZanFOYbXk950v6yVzgWdaroChz861PQXHiCdLj4WBBUmfwEjn; __atuvc=52%7C2%2C9%7C3; __atuvs=60040c9d95de614a001' ), )); $response = curl_exec($curl); curl_close($curl); $ql = (new QueryList)->setHtml($response); $range = ".row:gt(0)"; $rules = [ 'from' => [".col-xs-12 > .mobile_hide", "text"], 'time' => [".col-xs-0", "text"], 'message' => [".col-md-8", "text"] ]; $ql->find(".mobile_hide:contains(ADS)")->parent()->parent()->remove(); $msgs = $ql->range($range)->rules($rules)->query()->getData()->all(); return $msgs; } } private function insert($link, $data) { foreach ($data as $val) { echo sprintf("正在写入号码:\t\t %s", $val) . PHP_EOL; $num = explode(" ", $val); $_num = str_replace(['+', ' '], ['', ''], $val); $insert = [ 'country' => $num[0], 'phone' => $num[1], 'site' => 'receive-sms-free.net', 'url' => $link . $_num . "/" ]; Num::insert($insert); } } }