layout: post

title: "PHP爬虫和微信自动投票"

date: 2016-05-17 23:38:25 +0800

comments: true

categories: [php]

今天接触了PHP的模拟登陆和爬虫实战,涉及到了PHP获取远程文件的几种方式,防采集的一些方法,以及微信自动投票实战。

PHP获取远程文件

PHP获取远程文件主要有以下几种方式:

fopen

file_get_centents

socket

curl

过几天我们在结合实际代码分析这几种方式

防采集的一些方法

防采集的方法有很多,这里主要列出几种比较有效的

短时间访问次数限制

ip校验

机器特征校验

复杂加密

混淆代码

微信自动投票工具

这次主要分析这个。

http://wx.asplay.cn/index.php?

g=Wap&

m=Vote&

a=index& //ThinkPHP里面一些参数

token=jdfsam1432614294& //当前主用户标示

wecha_id=oQIrdjjmrAZXwKOh3Y6-1HeuwvEc&

id=27& //当前投票ID

sgssz=mp.weixin.qq.com

下面是请求的地址:

http://wx.asplay.cn/index.php?g=Wap&m=Vote&a=add_vote&token=jdfsam1432614294&wecha_id=oQIrdjjArAZYwKOh3Y6-1HeuwvEc

发送的数据:

wecha_id=oQIrdjjArAZYwKOh3Y6-1HeuwvEc&tid=27&chid=53%2C&token=jdfsam1432614294&action=add_vote、

投票成功返回的数据:

{"success":1,"token":"jdfsam1432614294","wecha_id":"oQIrdjjArAZYwKOh3Y6-1HeuwvEc","tid":"27","chid":"53","arrpre":{"53":33.33,"54":0,"55":0,"56":66.67}}

基于以上的这些信息,我们就能自己模拟POST的数据,和用户标示了。但是仅仅做到这些是不够的,我们还需要模拟微信的内核。

微信内核的ua://网上能找到

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.158888800.95 Safari/537.36 SE 2.X MetaSr 1.0

class curlajax{

public $cookiejar;

public $cookiefile;

public $ua;

public $debug;

function __construct(){

$this->debug = 0;

$this->ua = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.158888800.95 Safari/537.36 SE 2.X MetaSr 1.0'; //这里模拟微信内核

$this->cookiejar = 'cookie.txt';

$this->cookiefile = 'cookie.txt';

}

/****************************

*get 请求资源

*@param string 地址

*@param string referer

*@param boolen 是否返回头部

*@param array 头部附加cookie

****************************/

function httpget($url,$referer='',$withhead=0){

$ch = curl_init();

curl_setopt($ch,CURLOPT_URL,$url);

curl_setopt($ch,CURLOPT_COOKIEJAR,$this->cookiejar);

curl_setopt($ch,CURLOPT_COOKIEFILE,$this->cookiefile);

curl_setopt($ch,CURLOPT_HEADER,$withhead);

curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);

curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);

//curl_setopt($ch,CURLOPT_AUTOREFERER,1);

curl_setopt($ch,CURLOPT_USERAGENT,$this->ua);

curl_setopt($ch,CURLOPT_REFERER,$referer);

$r = curl_exec($ch);

if($this->debug){

echo '

';

var_dump(curl_getinfo($ch));

}

curl_close($ch);

return $r;

}

/****************************

*post 请求资源

*@param string 地址

*@param string referer

*@param array 提交数据

*@param boolen 是否返回头部

****************************/

function httppost($url,$referer='',$postdata=array(),$withhead=0){

$ch = curl_init();

curl_setopt($ch,CURLOPT_URL,$url);

curl_setopt($ch,CURLOPT_HEADER,$withhead);

curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);

curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);

//curl_setopt($ch,CURLOPT_AUTOREFERER,1);

curl_setopt($ch,CURLOPT_COOKIEJAR,$this->cookiejar);

curl_setopt($ch,CURLOPT_COOKIEFILE,$this->cookiefile);

curl_setopt($ch,CURLOPT_USERAGENT,$this->ua);

curl_setopt($ch,CURLOPT_REFERER,$referer);

curl_setopt($ch,CURLOPT_POST,1);

curl_setopt($ch,CURLOPT_POSTFIELDS,$postdata);

$r = curl_exec($ch);

if($this->debug){

echo '

';

var_dump(curl_getinfo($ch));

}

curl_close($ch);

return $r;

}

}

网上的cURL方法,我们这里有要用到

require_once("../03/curlajax.class.php");

?>

微信自动投票工具

/*模拟POST登录*/

echo "

这是微信自动投票工具

";

$jkxy = new curlajax();

$jkxy->debug = 0;

$jkxy->cookiejar = dirname(__FILE__).'\cookie1.txt';

$jkxy->cookiefile = dirname(__FILE__).'\cookie1.txt';

/*模拟提交信息*/

$username="oQIrdjj".rand(500,50000)."wKOh3Y6-1HeuwvEc";//用随机数来产生不同的用户ID

$data = "wecha_id=".$username."&tid=27&chid=53%2C&token=jdfsam1432614294&action=add_vote";//模拟不同的用户提交的数据

$url = 'http://wx.asplay.cn/index.php?g=Wap&m=Vote&a=add_vote&token=jdfsam1432614294&wecha_id='.$username;

$r = $jkxy->httppost($url,$url,$data,0);//获取返回数据

if(checkstr($r,'"success":1')==true){ //根据返回的数据判断是否投票成功

echo "投票成功";

}

else{

echo "投票失败";

}

/****************************

*检查$needle中是否含有$findstr

*@param string needle

*@param string findstr

****************************/

function checkstr($needle,$findstr){

$tempstr=explode($findstr,$needle);

if($tempstr>1){

return true;

}

else{

return false;

}

}

?>

通过这个实战,感觉突然打开了一扇大门。要仔细研究下爬虫的相关知识了。

微信模拟登陆php投票,PHP爬虫和微信自动投票相关推荐

  1. 爬虫模拟登陆手机验证码_爬虫入门到精通-headers的详细讲解(模拟登录知乎)...

    本文章属于爬虫入门到精通系统教程第七讲 直接开始案例吧. 本次我们实现如何模拟登陆知乎. 1.抓包 1. 首先打开知乎登录页 知乎 - 与世界分享你的知识.经验和见解 注意打开开发者工具后点击&quo ...

  2. 潜心专研Python模拟登陆专题,实现网易云音乐自动签到!这项目居然只值三百?

    前言: 时隔三周没有和大家见过面了,最近在研究python模拟登陆专题,话不多说,让我们愉快地开始实现模拟登陆实现网易云自动签到 开发工具 **Python****版本:**3.6.4 相关模块: D ...

  3. python微信公众号推送_python爬虫_微信公众号推送信息爬取的实例

    问题描述 利用搜狗的微信搜索抓取指定公众号的最新一条推送,并保存相应的网页至本地. 注意点 搜狗微信获取的地址为临时链接,具有时效性. 公众号为动态网页(JavaScript渲染),使用request ...

  4. android微信第三方登陆混淆,Android 第三方应用接入微信平台研究情况分享(二)

    微信平台开放后倒是挺火的,许多第三方应用都想试下,毕竟可以利用微信建立起来的关系链来拓展自己的应用还是挺不错的,可以节约很多在社交方面的开销,我最近由于实习需要也在研究这个东西,不过发现网上的相关资料 ...

  5. php 微信模拟登陆给用户发送消息(文字,图片,图文)

    <?php /* 原作者:https://github.com/itziy/wechat 修改:Server getUserFakeid函数 获取fakeid的正则匹配公式 调用方式简单说明:$ ...

  6. 利用selenium+chrome模拟登陆合工大信息门户并进行自动填写测评

    最近学校要填写对于老师的评教,不填写的就无法进行下周的选课∑^)/ 我这么懒,自然不想一个一个点进去填写,想到最近在学爬虫,干脆写一个爬虫帮我弄算了 ╭~~~╮ (o~.~o) 首先打开我们学校的信息 ...

  7. Java模拟登陆,将文件中的单词自动添加到扇贝生词本

    package autoAdd2扇贝;import java.io.BufferedReader; import java.io.FileReader; import java.io.IOExcept ...

  8. python爬取新浪新闻首页_Python爬虫学习:微信、知乎、新浪等主流网站的模拟登陆爬取方法...

    微信.知乎.新浪等主流网站的模拟登陆爬取方法 摘要:微信.知乎.新浪等主流网站的模拟登陆爬取方法. 网络上有形形色色的网站,不同类型的网站爬虫策略不同,难易程度也不一样.从是否需要登陆这方面来说,一些 ...

  9. # python模拟各大网站登陆方式, 包括爬虫--你们要的全都有

    python模拟各大网站登陆方式,以及一些爬虫程序 仅供练习使用,代码注释很详细 走过路过的大佬们,记得给个star支持一下,嘻嘻嘻? 收集了一些各大网站登陆方式, 和一些网站的爬虫程序,有的是通过s ...

最新文章

  1. 「小程序JAVA实战」java-sesion的状态会话与无状态会话(38)
  2. CEDD(Color and Edge Directivity Descriptor)算法
  3. MAT之PCA:利用PCA(四个主成分的贡献率就才达100%)降维提高测试集辛烷值含量预测准确度并《测试集辛烷值含量预测结果对比》
  4. 做好过程质量保证QA工作的几个关键方面
  5. Maven 中的pom.xml文件
  6. 使用nginx负载均衡的webservice wsdl访问不到_谁说前端不用懂,Nginx 反向代理与负载均衡(超实用)...
  7. PHP与MySQL动态网站开发:第4版
  8. php 怎么改迅雷,php实现把url转换迅雷thunder资源下载地址的方法
  9. Map转Object和List<Map> 转List Object
  10. Netty 基本原理
  11. linux udp 套接字编程获取源地址和目的地址(一)
  12. cocos2d-x打印log
  13. 内网渗透靶场(上)加入目标网段,抓取管理员密码 #zkaq
  14. MOSFET的雪崩特性
  15. ASP连接Oracle数据库简易DEMO完全案例
  16. DMU-单性状重复力模型-学习笔记3
  17. java 开发模式详解_Java开发中的23种设计模式详解4
  18. js月份的计算公式_JS根据生日月份和日期计算星座的简单实现方法
  19. arcgis 空间交集 计算_ArcGIS叠置分析之相交分析
  20. JiangxiBank

热门文章

  1. [Tree Breadth First Search] 二叉树的最大深度
  2. 使用OpenCV进行人脸检测和戴墨镜特效实战(附Python源码)
  3. MATLAB编写拉格朗日插值与龙格现象
  4. Recyclerview数据显示错乱完全解析
  5. Lit(二):响应式属性
  6. java网关限流_基于网关GateWay实现限流-令牌桶 及原理解析
  7. 数智未来 持续创新 | 易趋受邀出席CIAS 2022中国数智汽车峰会
  8. Sqoop数据迁移实战
  9. Activity has leaked window DecorView@992a599[XXXActivity] that was originally add
  10. 为什么两台电脑互连怎么一边能ping通在一边却ping不通