,curl模拟登陆的有关问题
程序员文章站
2022-03-18 08:43:44
...
高手请进,curl模拟登陆的问题
我想要做一个模拟登陆,可是一般网站有表单提交的都可以模拟登陆成功
就是另一些网站,比如速卖通(https://login.aliexpress.com/)
我的代码是这写的
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基础不是很好,看不懂他的代码,求高手提点下!
感谢啊!
------解决方案--------------------
你可以改改你得vlogin函数,察看返回头+body
我想要做一个模拟登陆,可是一般网站有表单提交的都可以模拟登陆成功
就是另一些网站,比如速卖通(https://login.aliexpress.com/)
我的代码是这写的
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基础不是很好,看不懂他的代码,求高手提点下!
感谢啊!
------解决方案--------------------
你可以改改你得vlogin函数,察看返回头+body
function vlogin($url,$request){
$cookie_jar = tempnam('./tmp','cookie');//在当前目录下生成一个随机文件名的临时文件
$ch = curl_init(); //初始化curl模块相关文章
相关视频
专题推荐
-
独孤九贱-php全栈开发教程
全栈 170W+
主讲:Peter-Zhu 轻松幽默、简短易学,非常适合PHP学习入门
-
玉女心经-web前端开发教程
入门 80W+
主讲:灭绝师太 由浅入深、明快简洁,非常适合前端学习入门
-
天龙八部-实战开发教程
实战 120W+
主讲:西门大官人 思路清晰、严谨规范,适合有一定web编程基础学习
网友评论
文明上网理性发言,请遵守 新闻评论服务协议
我要评论