不败君

前端萌新&初级后端攻城狮

PHP开发薅羊毛信息提醒

PHP开发薅羊毛信息提醒

2020-06-22 19:41:10

围观(2507)

近几年越来越多羊毛党, 他们经常去找一些优惠折扣相关的活动并参与进去获得一些利益, 甚至更有白嫖(不花任何成本 除了时间).


博主发现了两个经常发布一些羊毛信息的网站:

jike.info

yangmaoribao.com


打开这两个网站, 可以看到风格和布局几乎一致, 可以猜测是同一个程序, 当然使用什么程序并不是重点, 如果擅长使用 "开发者工具" 也就是 F12 , 点左上角的最新, 可以看到请求了一个这样的接口:

1.png


仔细看接口返回的数据, 还能看到直接返回了文章信息.

接着使用 PostMan 可以发现直接就能正常请求.

2.png


同样的操作, 再看看 yangmaoribao.com 的:

3.png


返回的数据结构都是一样的, 所以可以利用这两个网站进行开发一个羊毛信息提醒.

博主马上花了十分钟写了这样的代码:

<?php

$url = 'https://jike.info/api/recent?_=';

$lst_data = json_decode(file_get_contents($url), true)['topics'];   // jike.info

$url = 'https://yangmaoribao.com/api/recent?_=';

$lst_datas = json_decode(file_get_contents($url), true)['topics'];  // 羊毛日报

$lst_data = array_merge($lst_data, $lst_datas);

if (!$lst_data) exit('error');

$html = '';

$one_hour_ago = (time() - 3600) * 1000;

foreach ($lst_data as $row_data) {
    if ($row_data['timestamp'] > $one_hour_ago) {

        $post_time = date('Y-m-d H:i:s', $row_data['timestamp'] / 1000);
      
        $url = "https://jike.info/topic/{$row_data['slug']}";
      
        if (mb_strpos($row_data['user']['picture'], 'yangmaoribao') !== false) {
            $url = "https://yangmaoribao.com/topic/{$row_data['slug']}";
        }
        
        $html .= "{$row_data['title']} - {$post_time} <br> <a href='{$url}' target='_blank'>直达链接</a> <br><br>";
    }
}

if (empty($html)) exit('error');

echo $html;

虽然可以拿到了 标题 + 发布时间 + 链接. 但是还没做到提醒.

提醒方式其实不多, 无非就是邮件 / 短信 / 微信.


根据朋友的推荐, 发现了这个微信推送工具:

wxpusher.zjiecode.com/docs


直接看文档这个开始:

http://wxpusher.zjiecode.com/docs/#/?id=%e6%b3%a8%e5%86%8c%e5%b9%b6%e4%b8%94%e5%88%9b%e5%bb%ba%e5%ba%94%e7%94%a8


在他的后台创建应用后可以拿到这样的一串 Token:

4.png


需要关注一下自己创建的应用, 点关注后弹窗, 会有一个二维码, 扫码关注即可.

5.png


继续看文档这个:

http://wxpusher.zjiecode.com/docs/#/?id=%e5%8f%91%e9%80%81%e6%b6%88%e6%81%af-1

就能知道怎么请求接口进行推送了.


为了简单点, 直接调用接口的 GET 请求, 就不使用 POST 的接口了(博主懒).


所以直接上最后的代码:

<?php

$url = 'https://jike.info/api/recent?_=';

$lst_data = json_decode(file_get_contents($url), true)['topics'];   // jike.info

$url = 'https://yangmaoribao.com/api/recent?_=';

$lst_datas = json_decode(file_get_contents($url), true)['topics'];  // 羊毛日报

$lst_data = array_merge($lst_data, $lst_datas);

if (!$lst_data) exit('接口错误');

$html = '';

$one_hour_ago = (time() - 3600) * 1000;

foreach ($lst_data as $row_data) {
    if ($row_data['timestamp'] > $one_hour_ago) {

        $post_time = date('Y-m-d H:i:s', $row_data['timestamp'] / 1000);
      
        $url = "https://jike.info/topic/{$row_data['slug']}";
      
        if (mb_strpos($row_data['user']['picture'], 'yangmaoribao') !== false) {
            $url = "https://yangmaoribao.com/topic/{$row_data['slug']}";
        }
        
        $html .= "{$row_data['title']} - {$post_time} <br> <a href='{$url}' target='_blank'>直达链接</a> <br><br>";
    }
}

$html = urlencode($html);

if (empty($html)) exit('没有可以推送的');

$url = "http://wxpusher.zjiecode.com/api/send/message/?appToken=你的apptoken&content={$html}&uid=你的uid&url=http%3a%2f%2fwxpusher.zjiecode.com";

$result = file_get_contents($url);

var_dump($result);

注意, 以上代码需要将你的 apptoken 之类的信息配置到 $url 变量.

然后请求这个 PHP 即可.


请求之后你会在公众号接收到这样的消息:

6.png

点击查看完整消息后:

7.png

可以放到宝塔面板去跑:

8.png

任务类型可以选 Shell 执行 PHP 的命令行模式 (PHP CLI).

也可以将 PHP 文件放在一个可访问的网站目录, 然后执行 访问 URL 类型的定时任务.


最好设置为一个小时提醒一次, 如果想要设置两个小时, 请将上面代码中的 3600 改成 7200.

本文地址 : bubaijun.com/page.php?id=191

版权声明 : 未经允许禁止转载!

评论:我要评论
发布评论:
Copyright © 不败君 粤ICP备18102917号-1

不败君

首 页 作 品 微 语