实战PHP curl模拟登陆”游民星空”并发帖

一个小demo,使用php的curl模拟浏览器登陆游民星空网站个人中心后,并发帖。

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
  <!--?php 
header('content-type:text/html;charset=utf-8');
//初始化curl
$ch = curl_init();
$date = 'userName=xxxxxxxx&loginPassword=xxxxxxx&persistent=true&showCode=false&code=%E8%BE%93%E5%85%A5%E9%AA%8C%E8%AF%81%E7%A0%8';
//在控制台获取模拟浏览器头部请求数据
$header = array(
    'Host:i.gamersky.com',
    'http://i.gamersky.com',
    'Referer:http://i.gamersky.com/user/login/',
    'User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
);
//请求的地址,也是表单登陆提交地址
curl_setopt($ch,CURLOPT_URL,'http://i.gamersky.com/user/login');
//CURLOPT_RETURNTRANSFER,1设置保存不输出
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
//因为是登陆请求。所以请求方式设置为POST
curl_setopt($ch,CURLOPT_POST,1);
//登陆所需的表单数据,账号以及密码,在控制台formdate获得(大多数网站登陆提交登陆成功就会跳转找不到表单提交数据,因此可故意输入错误账号就不会有跳转变可查看到formdate数据,有的网站提交并非只有账号和密码,还会包含其他数据必须全部复制过来)
curl_setopt($ch,CURLOPT_POSTFIELDS,$date);
//模拟浏览器设置请求的header
curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
//开启cook
curl_setopt($ch,CURLOPT_COOKIESESSION,true);
//设置cook存储位置在当前路径下cook.txt里
$cookFile = dirname(__FILE__).'/cook.txt';
    curl_setopt($ch,CURLOPT_COOKIEFILE,$cookFile);
curl_setopt($ch,CURLOPT_COOKIEJAR,$cookFile);
curl_setopt($ch,CURLOPT_COOKIE,session_name().'='.session_id());
//开启允许自动跳转,因为登陆成功后都会自动跳转
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
//执行curl
$res1 = curl_exec($ch);
echo $res1;
 
 
/*登陆成功后开始模拟后台发说说,流程和登陆一样先发说说抓取formdate提交的数据即是$date2。*/
echo "-----------------------以下是评论</br>";
//用户中心发说说的formdate,内容是curlfashuoshuo6666666666666的
$date2 = 'jsondata=%7B%22content%22%3A%22curlfashuoshuo6666666666666%22%2C%22images%22%3A%22%22%2C%22videos%22%3A%22%22%2C%22clubId%22%3A%220%22%2C%22device%22%3A3%7D';
//因已经跳转到用户中心所以需要重新设置新的头部信息
$header2 = array(
    'Host:i.gamersky.com',
    'Origin:http://i.gamersky.com',
    'Referer:Referer:http://i.gamersky.com/home/',
    'User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
);
//要提交的目标地址。这里就是说说要提交的地址
curl_setopt($ch,CURLOPT_URL,'http://i.gamersky.com/club/api/addclubcontent');
//设置新的头部信息
curl_setopt($ch,CURLOPT_HEADER,$header2);
//设置提交的说说内容
curl_setopt($ch,CURLOPT_POSTFIELDS,$date2);
//执行curl,即开始,模拟提交
$res2 = curl_exec($ch);
curl_close($ch);
echo $res2;
 
 
 
?-->

dsadsa

 

dsfd

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: