php实现模拟登陆

在不考虑验证码的情况一下,php实现模拟登陆,网上给的办法一般是采用curl来模拟实现,但是curl实现的是服务器端与服务器端建立了会话,只能模拟登陆之后获取登陆之后的数据,无法将cookie信息种植到客户端上(至少目前本人查找没有找到办法)最后自己通过隐藏的iframe来实现。

1、curl实现模拟登陆的代码,(只是实现服务器与服务器建立会话,其实并没有在客户端与服务器之间建立会话)

<?php
$cookie_jar = tempnam('./tmp','cookie');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://192.168.0.22/logincheck.php');
curl_setopt($ch, CURLOPT_POST, 1);
$request = 'UNAME=admin&PASSWORD=123456';
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
//把返回来的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
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, 'http://192.168.0.22/general/');
curl_setopt($ch2, CURLOPT_HEADER, false);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch2, CURLOPT_COOKIEFILE, $cookie_jar);
$orders = curl_exec($ch2);
echo $orders;
exit;
echo '<pre>';
echo strip_tags($orders);
echo '</pre>';
curl_close($ch2);
?>

2、通过隐藏的iframe实现客户端与服务器端的通信(肯能带来一定的安全隐患)

<html>
<title></title>
<body>
<?
$goURL="http://<span style="font-family: Arial, Helvetica, sans-serif;">192.168.0.22</span><span style="font-family: Arial, Helvetica, sans-serif;">/general/email/";</span>
?>
<iframe name="hiddenLoginFrame" onload="get_pass()" src="ceshi1.php"   id="hiddenLoginFrame" width=0 height=0 frameborder=0 scrolling=no style="display:none;">

</iframe>
<script Language="JavaScript">
    function get_pass()
    {
        window.open("<?=$goURL ?>");
        window.close();
    }
</script>
</body>
</html>

ceshi1.php

<html>
<head>
    <title>ceshi</title>
</head>
<body onload="get_pass1();">
<form name="form1" method="post" target="hiddenLoginFrame" action="http://<span style="font-family: Arial, Helvetica, sans-serif;">192.168.0.22</span><span style="font-family: Arial, Helvetica, sans-serif;">/logincheck.php"></span>
    <input type="text" value="admin" name="UNAME">
    <input type="text" value="123456" name="PASSWORD">
</form>
</body>
<script Language="JavaScript">
    function get_pass1()
    {
        //document.form1.action=u_url;
        document.form1.submit();
    }
</script>
</html>
时间: 2024-10-25 18:44:42

php实现模拟登陆的相关文章

python爬虫 模拟登陆校园网-初级

最近跟同学学习爬虫的时候看到网上有个帖子,好像是山大校园网不稳定,用py做了个模拟登陆很有趣,于是我走上了一条不归路..... 先上一张校园网截图 首先弄清一下模拟登陆的原理: 1:服务器判定浏览器登录使用浏览器标识,需要模拟登陆 2: 需要post账号,密码,以及学校id python走起,我用的2.7版本,用notepad++写的,绑定python可以直接运行 由于是模拟网页登陆,需要导入urllib urllib2 cookielib库,前两个有与网页直接的接口,cookielib就是用来

模拟登陆国内著名知识交流网站

之前看了很长时间的前端相关知识,怕python手生,写个模拟登陆恢复一下 zhihu网上的info有些是需要登陆后才能访问爬去的,所以不妨试一试 1 首先自己登陆,然后用fiddler进行抓包 发现登陆zhihu需要post以下data: A?, 验证码哪去了,算了,没有更好. 下面就要编写代码了,稍等,先看一下zhihu的response resp的类型是json格式,经过检查,msg的值就是我们的登录状态了,所以一会我们会打印出这个值证明是否登录. 2 下面就不多说了,直接上代码 #!/us

模拟登陆、Cookie传递

---恢复内容开始--- 上个月月底把模拟登陆的问题解决了,现在有时间就正好记录并复习一下. 主要使用httpclient 来进行模拟登陆 首先做一个登陆布局  一直以来都是简单拖几个控件 没有啥特效  这次我想使用一点 Material Design设计风格    查了一下 TextInputLayout这个控件  还不错 TextInputLayout 来自于 Android Design Support Library    可以让edittext的hint在用户输入的时候  自动跳到上方

Python——新浪微博爬虫之模拟登陆

在编写微博爬虫的过程中,免不了要进行模拟登录,因为新浪微博不登陆只能访问少量的微博信息. 然而,由于新浪微博的反爬虫功能在不断更新,例如改变了密码的加密算法(RSA),以前的一些模拟登陆方式已经不适用了.所以一开始试了好几种方法,均不能成功.后来受http://www.jb51.net/article/46053.htm启发,已经实现了. 目前,亲测能用的步骤是:①通过预登录,使用GET方法,获得登录所需的servertime, nonce, pubkey, rsakv:②使用encode64加

PHP实现curl和snoopy类模拟登陆方法

Snoopy.class.php下载 方法/步骤 第一种:使用snoopy类实现模拟登陆 1.在网上下载一个Snoopy.class.php的文件   2.代码实现: <?php set_time_limit(0); require "Snoopy.class.php"; $snoopy=new Snoopy(); $snoopy->referer='你要模拟登陆的域名';//例如:http://www.baidu.com/ $snoopy->agent="

作业---模拟登陆

# 模拟登陆:# 1. 用户输入帐号密码进行登陆# 2. 用户信息保存在文件内# 3. 用户密码输入错误三次后锁定用户 user.txt文件内容: {"alex":"zs123","zs":"zs123","ls":"zs123"} lock.txt文件内容: 为空 代码如下: f = open("user.txt","r",encoding=&q

Jsoup模拟登陆例子

Jsoup模拟登陆小例子,不同的网站,需要不同的模拟策略,散仙在这里仅仅作为一个引导学习. Java代码   package com.jsouplogin; import java.util.HashMap; import java.util.List; import java.util.Map; import org.jsoup.Connection; import org.jsoup.Jsoup; import org.jsoup.Connection.Method; import org.

微信公众账户模拟登陆后的一系列操作

<?php header("content-type:text/html;charset=utf-8"); /** * wx_mass * * 完成微信公众账户模拟登陆后的一系列操作 * mass($content) 调用微信群发接口,群发文本信息 * getUserList($page,$pagesize,$group) 获取用户信息 * * 群发demo * * $user=array('account'=>'公众账户名称','password'=>'密码');

qtday02 qt做简单的加法器和模拟登陆功能

//在3t2目录下 //adder.h /* qt简单加法计算器 */ #ifndef ADDER_H #define ADDER_H #include<QDialog> #include<QLineEdit> #include<QtWidgets/QPushButton> #include<QtWidgets/QLabel> class Adder:public QDialog{ Q_OBJECT//让自定义的槽函数生效 private: QLineEdi

赶集网模拟登陆程序PHP

<?php $url = "https://passport.ganji.com/login.php"; //这里改成你自己的账号和密码 $data ="login_username=itbuluoge&login_password=123456"; $result = vpost($url,$data,'cookie'); echo request_url_data("http://www.ganji.com/vip/my_post_lis