精华内容
下载资源
问答
  • 如何实现网站登录功能

    千次阅读 2018-12-02 07:38:47
    如何实现网站登录功能http://www.bieryun.com/4623.html 我记得我刚刚学习基本PHP的时候,我正在尝试创建一个基本的网站。除了一件事,我还想到了其他一切。我想在我的网站上实现登录功能,我不知道该怎么做。有...

    如何实现网站的登录功能http://www.bieryun.com/4623.html


    我记得我刚刚学习基本PHP的时候,我正在尝试创建一个基本的网站。除了一件事,我还想到了其他一切。我想在我的网站上实现登录功能,我不知道该怎么做。有一些教程解释了创建登录系统,但它们太复杂了。我只想了解逻辑。所以今天在本文中,让我们看看登录系统如何工作以及如何为您的网站添加登录功能。

    基本设置

    我假设你已经有了一个用户表或集合的数据库设置,以防Mongodb。现在,您的表格中将包含电子邮件和密码等字段。而且假设您已经拥有一个名为Rishabh的用户Rishabh已经在网站上注册并在数据库中记录了他的电子邮件和密码。现在我们需要登录他,以便他可以在网站上执行某些操作,比如在某个地方写帖子或评论。

    登录表格

    您需要的第一件事是登录表单。它可能是一个非常华丽的或非常简单的东西。我在下面有一个简单的登录表单。

    表格有2个字段。用户名或电子邮件和密码字段。现在,当Rishabh访问该网站时,他将显示此登录表单,他需要输入他的用户信息。所以,假设他确实输入了如下图所示的信息。

    现在,需要将此信息发送到服务器。这可以通过Ajax或表单操作方法完成。我将把它留给你的选择,因为我们只是在讨论这里的逻辑。

    服务器逻辑

    服务器现在已收到用户的电子邮件和密码。现在它需要验证这些信息。服务器将首先检查记录中是否存在具有此类电子邮件的用户。如果用户不存在,服务器将告诉客户端没有这样的用户。如果存在用户,则服务器将获取与该用户关联的密码。然后,服务器将检查该用户的数据库注册表中的密码是否与登录表单发送的密码匹配。如果密码不匹配,服务器将给出错误的密码错误,否则它将登录用户。

    记录用户

    既然服务器知道用户输入的用户名和密码与数据库中的记录匹配,我们实际上可以将用户登录。这意味着在服务器上为用户创建会话。我建议你阅读这篇文章,以便清楚地了解会话的工作原理。但我仍然会在这里总结一下。

    在服务器验证了姓氏和密码之后,它会将用户详细信息存储在文件或某种非易失性形式中,并为其提供唯一密钥。此唯一密钥现在将以cookie的形式发送给用户。每次用户在网站上发出请求时,服务器都会根据cookie数据获取用户的详细信息。这就是每次登录用户发出请求时,服务器通过cookie知道用户的身份。

    结论

    我尽力用最简单的术语解释登录系统。我希望您现在对登录系统的工作原理有所了解。如果您仍然对整个过程的任何特定部分感到困惑,请在评论部分告诉我。

     

    展开全文
  • 网站添加微博登录按钮步骤
  • 在此示例中,我们将向您展示如何通过标准Java HttpsURLConnection登录网站。 该技术应可在大多数登录表单中使用。 本示例中使用的工具和Java库 Google Chrome浏览器–“网络”标签可分析HTTP请求和响应标头字段...
    登录表单

    在此示例中,我们将向您展示如何通过标准Java HttpsURLConnection登录网站。 该技术应可在大多数登录表单中使用。

    本示例中使用的工具和Java库

    1. Google Chrome浏览器–“网络”标签可分析HTTP请求和响应标头字段。
    2. jsoup库–提取HTML表单值。
    3. JDK 6。

    1.分析Http标头,表单数据。

    要登录网站,您需要知道以下值:

    1. 登录表单URL。
    2. 登录表单数据。
    3. 认证的URL。
    4. Http请求/响应标头。

    使用谷歌浏览器获取上述数据。 在Chrome浏览器中,右键单击所有位置,选择“检查元素”->“网络”标签。

    铬网络

    在编写代码之前,请尝试通过Chrome登录,观察HTTP请求,响应和表单数据的工作方式,稍后需要在Java中模拟相同的步骤。

    2. HttpsURLConnection示例

    在此示例中,我们向您展示如何登录Gmail。

    总结:

    1. 将HTTP“ GET”请求发送到Google登录表单– https://accounts.google.com/ServiceLoginAuth
    2. 通过Google Chrome浏览器的“网络”功能分析表单数据。 或者,您可以查看HTML源代码。
    3. 使用jSoup库提取所有可见和隐藏表单的数据,并用您的用户名和密码替换。
    4. 将HTTP“ POST”请求以及构造的参数发送回登录表单
    5. 用户身份验证后,将另一个HTTP“ GET”请求发送到Gmail页面。 https://mail.google.com/mail/

    注意
    该示例只是向您展示Java HttpURLConnection的功能。 通常,您应该使用Google Gmail API与Gmail进行交互。

    HttpUrlConnectionExample.java
    package com.mkyong;
    
    import java.io.BufferedReader;
    import java.io.DataOutputStream;
    import java.io.InputStreamReader;
    import java.io.UnsupportedEncodingException;
    import java.net.CookieHandler;
    import java.net.CookieManager;
    import java.net.URL;
    import java.net.URLEncoder;
    import java.util.ArrayList;
    import java.util.List;
    import javax.net.ssl.HttpsURLConnection;
    import org.jsoup.Jsoup;
    import org.jsoup.nodes.Document;
    import org.jsoup.nodes.Element;
    import org.jsoup.select.Elements;
    
    public class HttpUrlConnectionExample {
    
      private List<String> cookies;
      private HttpsURLConnection conn;
    
      private final String USER_AGENT = "Mozilla/5.0";
    
      public static void main(String[] args) throws Exception {
    
    	String url = "https://accounts.google.com/ServiceLoginAuth";
    	String gmail = "https://mail.google.com/mail/";
    
    	HttpUrlConnectionExample http = new HttpUrlConnectionExample();
    
    	// make sure cookies is turn on
    	CookieHandler.setDefault(new CookieManager());
    
    	// 1. Send a "GET" request, so that you can extract the form's data.
    	String page = http.GetPageContent(url);
    	String postParams = http.getFormParams(page, "username@gmail.com", "password");
    
    	// 2. Construct above post's content and then send a POST request for
    	// authentication
    	http.sendPost(url, postParams);
    
    	// 3. success then go to gmail.
    	String result = http.GetPageContent(gmail);
    	System.out.println(result);
      }
    
      private void sendPost(String url, String postParams) throws Exception {
    
    	URL obj = new URL(url);
    	conn = (HttpsURLConnection) obj.openConnection();
    
    	// Acts like a browser
    	conn.setUseCaches(false);
    	conn.setRequestMethod("POST");
    	conn.setRequestProperty("Host", "accounts.google.com");
    	conn.setRequestProperty("User-Agent", USER_AGENT);
    	conn.setRequestProperty("Accept",
    		"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
    	conn.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
    	for (String cookie : this.cookies) {
    		conn.addRequestProperty("Cookie", cookie.split(";", 1)[0]);
    	}
    	conn.setRequestProperty("Connection", "keep-alive");
    	conn.setRequestProperty("Referer", "https://accounts.google.com/ServiceLoginAuth");
    	conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
    	conn.setRequestProperty("Content-Length", Integer.toString(postParams.length()));
    
    	conn.setDoOutput(true);
    	conn.setDoInput(true);
    
    	// Send post request
    	DataOutputStream wr = new DataOutputStream(conn.getOutputStream());
    	wr.writeBytes(postParams);
    	wr.flush();
    	wr.close();
    
    	int responseCode = conn.getResponseCode();
    	System.out.println("\nSending 'POST' request to URL : " + url);
    	System.out.println("Post parameters : " + postParams);
    	System.out.println("Response Code : " + responseCode);
    
    	BufferedReader in = 
                 new BufferedReader(new InputStreamReader(conn.getInputStream()));
    	String inputLine;
    	StringBuffer response = new StringBuffer();
    
    	while ((inputLine = in.readLine()) != null) {
    		response.append(inputLine);
    	}
    	in.close();
    	// System.out.println(response.toString());
    
      }
    
      private String GetPageContent(String url) throws Exception {
    
    	URL obj = new URL(url);
    	conn = (HttpsURLConnection) obj.openConnection();
    
    	// default is GET
    	conn.setRequestMethod("GET");
    
    	conn.setUseCaches(false);
    
    	// act like a browser
    	conn.setRequestProperty("User-Agent", USER_AGENT);
    	conn.setRequestProperty("Accept",
    		"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
    	conn.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
    	if (cookies != null) {
    		for (String cookie : this.cookies) {
    			conn.addRequestProperty("Cookie", cookie.split(";", 1)[0]);
    		}
    	}
    	int responseCode = conn.getResponseCode();
    	System.out.println("\nSending 'GET' request to URL : " + url);
    	System.out.println("Response Code : " + responseCode);
    
    	BufferedReader in = 
                new BufferedReader(new InputStreamReader(conn.getInputStream()));
    	String inputLine;
    	StringBuffer response = new StringBuffer();
    
    	while ((inputLine = in.readLine()) != null) {
    		response.append(inputLine);
    	}
    	in.close();
    
    	// Get the response cookies
    	setCookies(conn.getHeaderFields().get("Set-Cookie"));
    
    	return response.toString();
    
      }
    
      public String getFormParams(String html, String username, String password)
    		throws UnsupportedEncodingException {
    
    	System.out.println("Extracting form's data...");
    
    	Document doc = Jsoup.parse(html);
    
    	// Google form id
    	Element loginform = doc.getElementById("gaia_loginform");
    	Elements inputElements = loginform.getElementsByTag("input");
    	List<String> paramList = new ArrayList<String>();
    	for (Element inputElement : inputElements) {
    		String key = inputElement.attr("name");
    		String value = inputElement.attr("value");
    
    		if (key.equals("Email"))
    			value = username;
    		else if (key.equals("Passwd"))
    			value = password;
    		paramList.add(key + "=" + URLEncoder.encode(value, "UTF-8"));
    	}
    
    	// build parameters list
    	StringBuilder result = new StringBuilder();
    	for (String param : paramList) {
    		if (result.length() == 0) {
    			result.append(param);
    		} else {
    			result.append("&" + param);
    		}
    	}
    	return result.toString();
      }
    
      public List<String> getCookies() {
    	return cookies;
      }
    
      public void setCookies(List<String> cookies) {
    	this.cookies = cookies;
      }
    
    }

    输出量

    Sending 'GET' request to URL : https://accounts.google.com/ServiceLoginAuth
    Response Code : 200
    Extracting form data...
    
    Sending 'POST' request to URL : https://accounts.google.com/ServiceLoginAuth
    Post parameters : dsh=-293322094146108856&GALX=CExqdUbvEr4&timeStmp=&secTok=&_utf8=%E2%98%83
    &bgresponse=js_disabled&Email=username&Passwd=password&signIn=Sign+in&PersistentCookie=yes&rmShown=1
    Response Code : 200
    
    Sending 'GET' request to URL : https://mail.google.com/mail/
    Response Code : 200
    <!-- gmail page content.....-->

    注意
    请参考此等效示例,但使用Apache HttpClient发送HTTP request

    参考文献

    1. 自动登录网站
    2. Android文档– HttpURLConnection
    3. 使用Java发送HTTP请求GET / POST以形成表单?
    4. jSoup库
    5. Apache HttpClient示例

    翻译自: https://mkyong.com/java/how-to-automate-login-a-website-java-example/

    展开全文
  • 如何登录一个网站

    千次阅读 2014-09-23 20:44:46
    登录一个没有验证码的网站是很简单d

    登录一个没有验证码的网站是很简单的,只需要找到登录的地址,再post它所需要的包即可。

    首先就要抓取发送的包。我这里用的是firefox的httpfox插件。



    如图就是我在研究刷评论的时候的截图,post方法后面的就是登录网址,而下面窗口的post data就是我们要发送的包。

    首先我们需要找到一个正确的登录网址。弹出的窗口是js做的,不好抓取,要是那种用html语言生成的页面,通常都是login结尾的。比如豆瓣就是:

    https://www.douban.com/accounts/login

    然后查看抓取的包如下:(会有很多包,主要查看的是post以及post前的get)



    post包的内容就如上所示了。source为None,redir是登录后去往的地址,form_email就是登录地址了,下面还有密码,以及login字段等等。这里需要注意的是,postdata是个字典,不仅仅要保持value一样,还要保持key一致。每个网站的登录名和密码的key并不都是一致的,login字段如果是乱码,就是中文的‘登录’。

    只要把上述字段弄成一个字典,post到登录网址上,就完成了登录过程。因为目前不想用cookies,因此最好redir的value是你想登录的网址,这样一登录就抓下来了目标地址。

    比如我登录豆瓣的地址就是:

     self.pwd = {
                'form_email':self.login,
                'form_password':self.password,
                'source':None,
                'redir':self.group_url,
                'remember':'on',
                'login':'登录',
            }
    用户名密码地址自己填上就可以了。打开网页最常用的就是urllib2中的open方法,最近偷懒,用requests,很方便,很好用。

    首先模拟登录网站,先get一下,表示自己点击了网站。(如果post中有可变内容,通常也是在这一步得到,我会在下一篇文章中详细说明)。

    self.jar = cookielib.CookieJar()
    self.request = requests.get(self.url, cookies=self.jar)
    这里生成了一个空的cookie。豆瓣没有动态验证(偶尔会有验证码),然后我们就可以登录了。

    self.request = requests.post(self.url, headers=self.header, cookies=self.request.cookies, data=self.pwd)
    这里我简单的伪装了一个header,具体说明看前面的文章。这里的self.request就是redir网址的那个对象,就可以继续分析了。分析方法我前一篇文章也说过了。

    有时候会遇到动态验证的网站,其实原理也很简单,我会在下一篇文章中说明。

    源代码:https://github.com/gt11799/login_website

    ——————————————————————

    github主页:https://github.com/gt11799 

    E-mail:gting405@163.com



    展开全文
  • 在有关Java Web抓取的第一篇文章中,我展示了如何从CraigList网站提取数据。 但是您想要的数据又或者您要在网站上执行的操作是否需要身份验证呢? 在这个简短的教程中,我将向您展示如何制作可以处理大多数身份验证...

    有关Java Web抓取的第一篇文章中,我展示了如何从CraigList网站提取数据。
    但是您想要的数据又或者您要在网站上执行的操作是否需要身份验证呢?

    在这个简短的教程中,我将向您展示如何制作可以处理大多数身份验证表单的通用方法。

    认证机制

    身份验证机制有很多,最常见的是登录表单,有时还会使用CSRF令牌作为隐藏输入。

    要使用刮板自动登录到网站,您的想法是:

    • GET /登录页面

    • 选择第一个<input type="password">标记

    • 选择第一个<input>之前未被隐藏的

    • 设置两个输入的value属性

    • 选择随附的表格,然后提交。

    黑客新闻认证

    假设您要创建一个登录黑客新闻的机器人(提交链接或执行需要经过身份验证的操作):

    这是登录表单和关联的DOM:

    现在我们可以实现登录算法

        public static WebClient autoLogin ( String loginUrl , String login , String password ) throws FailingHttpStatusCodeException , MalformedURLException , IOException {
            WebClient client = new WebClient ();
            client . getOptions (). setCssEnabled ( false );
            client . getOptions (). setJavaScriptEnabled ( false );
    
            HtmlPage page = client . getPage ( loginUrl );
    
            HtmlInput inputPassword = page . getFirstByXPath ( "//input[@type='password']" );
            //The first preceding input that is not hidden
            HtmlInput inputLogin = inputPassword . getFirstByXPath ( ".//preceding::input[not(@type='hidden')]" );
    
            inputLogin . setValueAttribute ( login );
            inputPassword . setValueAttribute ( password );
    
            //get the enclosing form
            HtmlForm loginForm = inputPassword . getEnclosingForm () ;
    
            //submit the form
            page = client . getPage ( loginForm . getWebRequest ( null ));
    
            //returns the cookie filled client :)
            return client ;
        }
    

    然后是主要方法,即:

    • 使用正确的参数调用autoLogin

    • 前往https://news.ycombinator.com

    • 检查注销链接是否存在以验证我们已登录

    • 将cookie打印到控制台

        public static void main ( String [] args ) {
    
            String baseUrl = "https://news.ycombinator.com" ;
            String loginUrl = baseUrl + "/login?goto=news" ; 
            String login = "login" ;
            String password = "password" ;
    
            try {
                System . out . println ( "Starting autoLogin on " + loginUrl );
                WebClient client = autoLogin ( loginUrl , login , password );
                HtmlPage page = client . getPage ( baseUrl ) ;
    
                HtmlAnchor logoutLink = page . getFirstByXPath ( String . format ( "//a[@href='user?id=%s']" , login )) ;
                if ( logoutLink != null ){
                    System . out . println ( "Successfuly logged in !" );
                    // printing the cookies
                    for ( Cookie cookie : client . getCookieManager (). getCookies ()){
                        System . out . println ( cookie . toString ());
                    }
                } else {
                    System . err . println ( "Wrong credentials" );
                }
    
            } catch ( Exception e ) {
                e . printStackTrace ();
            }
        }
    

    您可以在此Github存储库中找到代码

    走得更远

    在许多情况下,此方法将不起作用:Amazon,DropBox ...以及所有其他受两步/验证码保护的登录表单。

    可以通过以下代码改进的事情:

    • 处理autoLogin内部的注销链接autoLogin

    • 检查null输入/表单并抛出适当的异常

    在下一篇文章中,我将向您展示如何使用OCR和验证码破解API处理验证码或虚拟数字键盘!

    如果您喜欢网页抓取并厌倦了代理,JS渲染和验证码的处理,则可以查看我们新的网页抓取API ,其中有前1000个API调用。

    From: https://dev.to/scrapingbee/how-to-log-in-to-almost-any-websites-7dn

    展开全文
  • WordPress网店或网站后台登陆...login wordpress xuhss.com01 - 如何登录WordPress网站后台 也就是说,想要登录到WordPress后台,只需要在浏览器中,访问到这个文件即可 使用浏览器访问wp-login.php这个文件 例如,...
  • 主要介绍了Java 爬虫如何爬取需要登录网站,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 功能测试(Function test) 输入正确的用户名和密码,点击提交按钮,验证是否能正确登录。... 登录成功后能否能否跳转到正确的页面 用户名和密码,如果太短或者太长,应该怎么处理 用户名和密码,中...
  • 文章目录0.来源1....引入第三方账号方案以QQ登录为例数据库设计3....第三方用户接入技术上比较简单,设计 user_thirds 是用来支持后续更多的第三方登录的接入 这是简单的设计方案,用户量大的情况要另作考虑
  • 登录验证使用的是nginx中的auth系列的模块。本文章以认证语句放置在server中为例。   在之前的文章中,登录实验环境www.111111.com,返回有内容,如下图所示。 1、找到www.111111.com的配置文件 2、打开...
  • 网站如何让您登录

    2016-12-25 09:16:07
    <p>Quick Question: When you login to your account on a website what does it do to keep you logged in so you don't login again and again when you visit another page? </div>
  • 如何破解大型网站登录

    万次阅读 2017-03-31 20:17:28
    那么接下来,我来讲解如何通过Hack技术来模拟 哔哩哔哩 的登录,并完成我们的视频上传等操作。因此内容中略有“暴力”,若您感到不适,那还是也请看完它。 按照以往的老套路,我们首先需要弄清楚它的登录逻辑,并...
  • 前面介绍过《用c#开发微信 (20) 微信登录网站 - 扫描二维码登录》,本文介绍如何用支付宝扫描二维码登录网站。 1 注册企业支付宝帐号 https://enterpriseportal.alipay.com/login.htm 2 实名认证 提供公司相关证件...
  • 下面是学做网站论坛讲解如何制作网站前台用户登录/注册功能视频教程。 下面学做网站论坛就来介绍一下WordPress纯代码制作前台登录/注册功能方法。(如果你对Wordpress程序不了解,可以先学习一下wordpress教程) ...
  • 如何使用支付宝账号授权登录网站

    万次阅读 2017-12-02 15:56:56
    本周在项目开发中使用到了支付宝授权登录(一键登录)我们的网站,周末做一下总结:0.总体思路为防止各位朋友看迷糊,先说一下整体执行流程:用户在我们网站点击一个“支付宝授权登录”按钮,请求到了java后台,完成...
  • 如果想让网站实现QQ登录功能,前提是网站要具备api的接口,如果没有这个接口,那就很难实现这个功能了。 网站QQ登录功能,是通过接入QQ登录,用户可以使用QQ账号直接登录接入的站点,从而可以达到无需注册也能登录...
  • 最近很多朋友反映无法访问Pixiv网站,下文小编就为大家带来P站无法登陆解决办法,感兴趣的朋友可以一起看看
  • <p><img alt="" height="285" src="https://img-ask.csdnimg.cn/upload/1618372271579.png" width="1254" />申请了网站应用,...可以实现QQ登录功能吗(不部署,只是本地测试)</p>
  • 如何用 Python 爬取需要登录网站? 需要登陆网站后才能获取数据的页面爬取 不过他们都是用python实现的,网上关于MATLAB爬取需要登录网站资源较少,刚好今天研究了下,在此记录分享。 我用的是获取’User-Agent...
  • 这是项目一的登录方法 function zjlogin() { var username = $("#username").val(); var password = $("#password").val(); var yzm1 = $('#gryzm').val(); var rand = $('#rand1').val(); if ...
  • 如题,2个网站都是同一家公司的,网站webapp1和webapp2,她们所属不同服务器上,如何在webapp1登录的情况下打开webapp2网站实现自动登录,反之也一样,就是无论哪个先登录,另一个网站打开的时候就自动登录
  • 网站如何集成QQ登录

    2014-10-27 21:22:41
    申请Appkey与Appid ...到技术支持中心下载Java sdk包,不要自己用httpclient去调用QQ的接口,那样不安全,可能会被别人攻击网站,下载好的sdk里会有一个demo,把demo里的 lib下的依赖包放到工程lib下,...
  • 如何设计网站登录和注册功能

    千次阅读 2018-04-04 10:47:43
    但是你一定会发现,就是这么简单的登录和注册,有的网站做的行云流水和如丝般顺滑,有的网站做的沟沟坎坎和雷坑遍布。什么会有这么大的差异?主要在于思路的混乱和不一致。只有掌握了严谨和逻辑的设计思路,不仅...
  • 无论如何或在哪里设置 WordPress,请使用相同的 URL 登录: http://[WordPress 域名】/wp-admin 输入用户名和密码,然后单击登录。这将打开 WordPress 控制面板。 下一步 如果您忘记了登录信息,可以重置 ...
  • 如何通过Login.html本地网页点击登陆功能,就能直接链接并登录到其他官网(比如CSDN、QQ等)的界面。 我的思路是:将自己写好的用户名密码写到action中,用get请求发送到目标网站。但是,新的问题是目标网站他不自动...
  • 举个例子 如何用PHP代码实现打开iteye的登录界面,自动填写用户名,密码并且自动登陆?不考虑验证码。 PHP语言能不能实现这样的功能,如果不能,什么代码可以实现? :D
  • 为了网站安全,如何修改Wordpress网站默认登录地址wp-admin呢?下面学做网站论坛介绍一下修改方法。 方法/步骤 登录自己的网站后台,点击左侧菜单的【插件】-【安装插件】-后台搜索插件Protected wp-login并进行...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,962
精华内容 2,384
关键字:

如何登录网站