| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- <?php
- namespace Heanup\Library\Sms;
- use Heanup\App\Api\Package\Database\Num;
- use Heanup\Library\Sms;
- use QL\QueryList;
- class ReceiveSmsFree implements Sms
- {
- /**
- * @return string[]
- */
- public function getCountry(): array
- {
- $data = [];
- for ($i = 1; $i <= 3; $i++) {
- $url = "https://receive-sms-free.net/regions/" . $i . ".html";
- $ql = (new QueryList)->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);
- }
- }
- }
|