我想要做一个模拟登陆,可是一般网站有表单提交的都可以模拟登陆成功
就是另一些网站,比如速卖通(https://login.aliexpress.com/)我的代码是这写的<?php function vlogin($url,$request){
$cookie_jar = tempnam('./tmp','cookie');//在当前目录下生成一个随机文件名的临时文件
$ch = curl_init(); //初始化curl模块
curl_setopt($ch,CURLOPT_URL,$url);//登录页地址
curl_setopt($ch, CURLOPT_POST, 1);//post方式提交
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);//要提交的内容
//把返回$cookie_jar来的cookie信息保存在$cookie_jar文件中
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);
//设定返回的数据是否自动显示
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//设定是否显示头信息
curl_setopt($ch, CURLOPT_HEADER, false);
//设定是否输出页面内容
curl_setopt($ch, CURLOPT_NOBODY, false);
curl_exec ($ch);
curl_close($ch); //get data after login
return $cookie_jar;
}
//登录成功后通过cookies获取页面内容
function get_content_by_cookie($url,$cookie_jar){
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, $url);
curl_setopt($ch2, CURLOPT_HEADER, false);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch2, CURLOPT_COOKIEFILE, $cookie_jar);
$orders=curl_exec($ch2);
curl_close($ch2);
return $orders;
} function clear_cookie($cookie_tmp_name){
@unlink($cookie_tmp_name);
}
$list_url='http://cn.ae.alibaba.com/index.htm';
$login_url='https://login.aliexpress.com/';
$post_data='pd=aliexpress&xloginPassport=******&xloginPassword=******';
$cookie_file=vlogin($login_url,$post_data);
$tmp_curl=get_content_by_cookie($list_url,$cookie_file);
echo $cookie_file;
echo $tmp_curl;
//clear_cookie($cookie_file);
?>
可是登陆不成功,感觉应该是 $login_url 错了,速卖通里既然是不通过form提交的,我JS基础不是很好,看不懂他的代码,求高手提点下!
感谢啊!
就是另一些网站,比如速卖通(https://login.aliexpress.com/)我的代码是这写的<?php function vlogin($url,$request){
$cookie_jar = tempnam('./tmp','cookie');//在当前目录下生成一个随机文件名的临时文件
$ch = curl_init(); //初始化curl模块
curl_setopt($ch,CURLOPT_URL,$url);//登录页地址
curl_setopt($ch, CURLOPT_POST, 1);//post方式提交
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);//要提交的内容
//把返回$cookie_jar来的cookie信息保存在$cookie_jar文件中
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);
//设定返回的数据是否自动显示
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//设定是否显示头信息
curl_setopt($ch, CURLOPT_HEADER, false);
//设定是否输出页面内容
curl_setopt($ch, CURLOPT_NOBODY, false);
curl_exec ($ch);
curl_close($ch); //get data after login
return $cookie_jar;
}
//登录成功后通过cookies获取页面内容
function get_content_by_cookie($url,$cookie_jar){
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, $url);
curl_setopt($ch2, CURLOPT_HEADER, false);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch2, CURLOPT_COOKIEFILE, $cookie_jar);
$orders=curl_exec($ch2);
curl_close($ch2);
return $orders;
} function clear_cookie($cookie_tmp_name){
@unlink($cookie_tmp_name);
}
$list_url='http://cn.ae.alibaba.com/index.htm';
$login_url='https://login.aliexpress.com/';
$post_data='pd=aliexpress&xloginPassport=******&xloginPassword=******';
$cookie_file=vlogin($login_url,$post_data);
$tmp_curl=get_content_by_cookie($list_url,$cookie_file);
echo $cookie_file;
echo $tmp_curl;
//clear_cookie($cookie_file);
?>
可是登陆不成功,感觉应该是 $login_url 错了,速卖通里既然是不通过form提交的,我JS基础不是很好,看不懂他的代码,求高手提点下!
感谢啊!
解决方案 »
- php执行windows程序问题,紧急求助
- 用脚本模拟浏览器Post,结果总是能被服务器识别,怎么办
- php如何直接实现对十进制数字转换成2进制,再进行2进制取反,再取出出对应的10进制数字
- php中上传文件为何不能保存在指定路径
- xampp
- 急!求一个好看实用的PHP+JS分页!效果类似百度
- 请问谁有在网页中实现打字练习的代码?
- 如何去掉php自动在冒号前面加斜杆。
- 怎样用 FTP 函数改变文件夹的属性?
- 为什么我把linux下的php代码移植到windows下,都能走到,但是就是显示不出页面啊?请高手帮帮忙!
- mysqli_connect和mysql_connect的区别
- SMTP Error: Could not connect to SMTP host.
function vlogin($url,$request){
...
..
curl_setopt($ch,CURLOPT_URL,$url);//登录页地址
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); //加入这一行先
..
..
}
http://php.net/manual/en/book.curl.php
看第二个评论
function vlogin($url,$request){
$cookie_jar = tempnam('./tmp','cookie');//在当前目录下生成一个随机文件名的临时文件
$ch = curl_init(); //初始化curl模块
curl_setopt($ch,CURLOPT_URL,$url);//登录页地址
curl_setopt($ch, CURLOPT_POST, 1);//post方式提交
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); //你注释掉这一行再看看,有http返回吗?
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);//要提交的内容
//把返回$cookie_jar来的cookie信息保存在$cookie_jar文件中
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);
//设定返回的数据是否自动显示
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//设定是否显示头信息
curl_setopt($ch, CURLOPT_HEADER, true);//改成true察看返回头
//设定是否输出页面内容
curl_setopt($ch, CURLOPT_NOBODY, false);
$loginReturn = curl_exec ($ch);
curl_close($ch); //get data after login
echo $loginReturn;//察看提交之后返回头 + 页面
return $cookie_jar;
}
我觉得应该是$url有问题,可是查不出
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
是不是看到login的http返回了?
function xman_callback(){
window.location.href = 'http://www.aliexpress.com';
}
</script>
<script src="https://login.alibaba.com/xman/xman.js?pd=aliexpress&display=e&div_id=expressbuyerlogin&style=l&login=b&lbutton=c&link=b"></script>
下面那个script引入的js是关键,向某个后台地址ajax post了,然后调用这个xman_callback,你可以用用sniff监视http请求.
嗯,我也试下看,刚用firebug看过了,没看出来
比较麻烦,找不出POST请求页面
是GET方式向 xman/xlogin.js 提交数据
其中“xloginPassword”并不是简单的md5加密,具体的算法在beacon_ws.js可以看到
dmtrack_pageid 这个参数的值前26位是可以在https://login.aliexpress.com/页中抓取的,但后面的16位就不知道从哪里接上来的了。
自己弄了几天,还是没实现,悲剧啊$login_url='https://login.alibaba.com/xman/xlogin.js';
$post_data='pd=aliexpress&[email protected]&xloginPassword=86eb79049a153ba4501028efa25378be&xloginCheckToken=';感觉应该是登陆成功了,却无法获取页面内容