yemoecom 发表于 2018-7-14 13:51

【php】利用某网站获取wx公众号获取wx文章发布到织梦后台

本帖最后由 yemoecom 于 2018-7-14 21:57 编辑

第一次发帖!代码写的有点松散!讲究使用吧!
思路就是通过抓包得到接口地址,然后处理数据得到微信文章地址。然后再获取微信文章的内容!最后发布到织梦的后台
注意的是!这里用到的是织梦的免登陆接口(火车头用的那个)。如果不用这个免登陆接口织梦好像修改后台某个文件(等等!我找下发下)。织梦自带免登陆:修改如下

//检验用户登录状态
$cuserLogin = new userLogin();
if($cuserLogin->getUserID()==-1)
{
    header("location:login.php?gotopage=".urlencode($dedeNowurl));
    exit();
}
修改为:
//检验用户登录状态
$cuserLogin = new userLogin();
if($cuserLogin->getUserID()==-1)
{
if($my_u != '')
{
$res = $cuserLogin->checkUser($my_u,$my_p);
if($res==1)
$cuserLogin->keepUser();
}
if($cuserLogin->getUserID()==-1)
{
header("location:login.php?gotopage=".urlencode($dedeNowurl));
exit();
}
}

然后火车头发布模块修改为
article_add.php?my_u=你后台用户名&my_p=你后台密码


整个代码如下:
<?php

//发送的内容字段
/**
$title='title5';
$body='body6';
$typeid='1';
$pubdate='pubdate';
$shorttitle='shorttitle';
$tags='tags';
$source='source';
$writer='writer';
$flags='c';
**/

//获取内容
$weburl='http://www.gsdata.cn';
//获取公众号地址
$gs_url='http://www.gsdata.cn/rank/toparc?wxname=ZQHBhDpSYJWq5innNgQ5O0O0O2O0O0O1&wx=dxiang5&sort=-1';//可以在搜搜到的页面获取微信名和地址wxname=xxx和wx=xxxx
      $gs_data=postdata($gs_url);
      $gs_data=json_decode($gs_data,true);
      $gs_count=count($gs_data['data']);
      for($i=0;$i<$gs_count;$i++){
                $title=$gs_data['data'][$i]['title'];
                $pubdate=$gs_data['data'][$i]['posttime'];
                $tags=$gs_data['data'][$i]['content'];
                $source='网络';
                $writer=$gs_data['data'][$i]['name'];
                $rand=rand(1,200);//随机数!推荐使用
                $flags='';
                if($rand > 100){
                        $flags='c';
                }
                $shorttitle=$gs_data['data'][$i]['title'];
                $typeid='1';//要发布到后台的栏目id
                $counts=file_get_contents($gs_data['data'][$i]['url']);
                $_cmatch='/<div class="rich_media_content.*?>[\s]+?(.*?)[\s]+?<\/div>/i';
                preg_match($_cmatch,$counts,$g_body);
                $body=trim($g_body);
                $body=preg_replace('/(\s+style=.*?;")/','',$body);
                $body=preg_replace('/(\s+class="")/','',$body);
                $body=preg_replace('/(<div\s+.*?>)/','',$body);
                $body=preg_replace('/(<\/div>)"/','',$body);
                $body=preg_replace('/\s+data-ratio="(.*?)"/','',$body);
                $body=preg_replace('/(<qqmusic.*?)>(<\/qqmusic>)/','',$body);
                $body=preg_replace('/(<mpvoice.*?)>(<\/mpvoice>)/','',$body);
                $body=preg_replace('/(<p><span><\/span><\/p><p><\/p>)/','',$body);
                $body=preg_replace('/(<p><span><\/span><br\/><\/p>)/','',$body);
                $body=preg_replace('/(<p><\/p><p><\/p>)/','',$body);
                $body=preg_replace('/(<p><span><br\/><\/span><\/p>)/','',$body);
                $body=preg_replace('/(<p><\/p>)"/','',$body);
                $body=preg_replace('/(<p><br\/><\/p>)/','',$body);
                $body=preg_replace('/(label=".*?")/','',$body);
                $body=preg_replace('/(<section class="xmteditor".*?)(<\/section>)/','',$body);
                $body=preg_replace('/(<p><span><strong><br\/><\/strong><\/span><\/p>)/','',$body);
      if(preg_match("/红包|送送/",$title)){
                        echo "have AD pass ";
                        continue;
                }
                if(empty($body)){
                        echo "内容不能为空";
                        continue;
                }
                $data='title='.$title.'&body='.$body.'&typeid='.$typeid.'&dopost=save&pubdate='.$pubdate.'&shorttitle='.$shorttitle.'&redirecturl=&tags='.$tags.'&source='.$source.'&writer='.$writer.'&typeid2=&keywords='.$tags.'&description=&needwatermark=0¬post=1&channelid=1&remote=0&dellink=1&autolitpic=0&autokey=1&sptype=auto&spsize=3&money=0&ishtml=1&sortup=0&arcrank=0&templet=&username=admin&flags[]='.$flags.'';

                $url='http://127.0.0.1/dede/jiekou.php?pw=密码';//织梦后台接口后台地址
       postdata($url,$data);
                echo $title.'OK ';
                //echo $body;
                sleep(2);
      }
function postdata($url,$data=''){
      $header = array (
0 => 'Accept: */*',
1 => 'Accept-Encoding: gzip, deflate',
2 => 'Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
3 => 'Connection: keep-alive',
4 => 'DNT: 1',
5 => 'Host: www.gsdata.cn',
6 => 'Referer: http://www.gsdata.cn/rank/wxrank',
7 => 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0 FirePHP/0.7.4',
8 => 'X-Requested-With: XMLHttpRequest',
9 => 'x-insight: activate',
);

$timeout=20;
$ch= curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);       //返回数据不直接输出
    curl_setopt($ch, CURLOPT_ENCODING, "gzip");      //指定gzip压缩
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);    //302/301
      if(substr($url, 0, 8) === 'https://') {
      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
      curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
      curl_setopt($ch, CURLOPT_SSLVERSION, 1);
    }
    if(!empty($data)) {
      curl_setopt($ch, CURLOPT_POST, 1);               //发送POST类型数据
      curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    }
      if(!empty($cookie)) {
      $header[] = $cookie;
    }
    if(!empty($header)) {
      curl_setopt($ch, CURLOPT_HTTPHEADER, $header);   //使用header头信息
    }
      curl_setopt($ch, CURLOPT_TIMEOUT, (int)$timeout);
      $content = curl_exec($ch);
    if($error = curl_error($ch)) {
      //log error
      error_log($error);
    }
    curl_close($ch);
      return $content;
}
?>

写这个也花了点时间!第一次采集微信的文章,如果用的话!修改下你自己的信息就可以了!还有使用的话!最好不要用浏览器使用这个程序(数据多了!浏览器会崩溃)在cmd下或者在linux里执行最佳!接口什么的大家自己找吧!

最后!第一次发帖!大家能赏些钢镚吗?

茫然唔错 发表于 2018-7-14 15:21

帝国可以吗:lol

yemoecom 发表于 2018-7-14 16:39

茫然唔错 发表于 2018-7-14 15:21
帝国可以吗

可以的!只要把$data 中的post字段地址填对就行了!可以抓包或者火车头提取!的

茫然唔错 发表于 2018-7-14 17:18

yemoecom 发表于 2018-7-14 16:39
可以的!只要把$data 中的post字段地址填对就行了!可以抓包或者火车头提取!的

帝国貌似没有免登陆吧

FantasyX 发表于 2018-7-15 00:15

谢谢分享
页: [1]
查看完整版本: 【php】利用某网站获取wx公众号获取wx文章发布到织梦后台