爬蟲繞過“登入頁面”
當我們在寫爬蟲的時候,往往會遇到很多反爬的問題。
比如:在登入頁面設定驗證碼、掃描二維碼登入、滑動滑鼠登入、手機簡訊驗證碼登入等等。這裡介紹一種個人已經實現的方法——繞過登入頁面。這裡的繞過不是說真的可以繞過登入,除非這個系統本來就有問題,這是這個系統天大的bug。這裡說的繞過登入是指登入一次記住cookie資訊,下次登入的時候就直接跳過了登入的頁面。廢話不多說,直接上程式碼:
package com.xiaojiang.spidertest; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.net.HttpCookie; import java.util.zip.GZIPInputStream; import org.apache.commons.io.IOUtils; import org.apache.http.Header; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicHeader; import org.apache.http.util.EntityUtils; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import com.xiaojiang.exception.DataTaskException; import com.xiaojiang.httpclient.HttpUserAgent; public class CookieTest { public static void main(String[] args) throws Exception, IOException { DefaultHttpClient client = new DefaultHttpClient(); HttpResponse response = null; String newUrl = "http://www.dajie.com/home"; HttpGet httpGet = new HttpGet(newUrl); //在頁面控制檯執行document.cookie String cookie = "DJ_RF=empty; DJ_EU=http%3A%2F%2Fwww.dajie.com%2Fhome; DJ_UVID=MTQ2MTkwNzk3NDU4MTg1NjQ2; dj_cap=0564c054acc1ce12402998471ae0af54; regSucceedType=email; dj_auth_v3=MrZrP3TGNRNXCNiOpQY7Ggscf4kjfEEsJzFPDzu3iwi5XtG9tS3Sw-WgChC2DVKL; uchome_loginuser=35375099; USER_ACTION=\"request^AProfessional^AREG^Aregm:crt0^A-\"; send_verify_mail=961254858%40qq.com; login_email=961254858%40qq.com; inbound_tag=true"; httpGet.addHeader(new BasicHeader("Cookie", cookie)); httpGet.setHeader("Accept-Language", "zh-cn,zh;q=0.5"); httpGet.setHeader("Accept-Charset", "GB2312,utf-8;q=0.7,*;q=0.7"); httpGet.setHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); httpGet.setHeader("Accept-Encoding", "gzip, deflate"); httpGet.setHeader("User-Agent", HttpUserAgent.get()); response = client.execute(httpGet); String html = formatResponse(response); Document doc = Jsoup.parse(html); String text = doc.select(".feed-header").get(0).text(); System.out.println(text); httpGet.releaseConnection(); } private static String formatResponse(HttpResponse response) throws Exception { ByteArrayInputStream bis = null; Header contentEncoding = response.getFirstHeader("Content-Encoding"); if(contentEncoding == null){ return EntityUtils.toString(response.getEntity(),"UTF-8"); } else { String charset = "utf-8"; Header contentType = response.getFirstHeader("Content-Type"); if(contentType != null){ String contentTypeStr = contentType.getValue(); if(contentTypeStr != null && !"".equals(contentTypeStr)){ charset = contentTypeStr.substring(contentTypeStr.indexOf("=") + 1,contentTypeStr.length()); } } String contentEncodingType = contentEncoding.getValue(); if(contentEncodingType.equalsIgnoreCase("gzip")){ if(response.toString().contains("soufun")) charset = "gb2312"; byte[] bytes = IOUtils.toByteArray(response.getEntity().getContent()); bis = new ByteArrayInputStream(bytes); return uncompress(bis ,charset); } } return null; } /** * GZIP解壓 */ private static String uncompress(ByteArrayInputStream in, String charset) { ByteArrayOutputStream out = new ByteArrayOutputStream(); try { GZIPInputStream gunzip = new GZIPInputStream(in); byte[] buffer = new byte[256]; int n; while((n = gunzip.read(buffer)) >=0 ){ out.write(buffer, 0, n); } return out.toString(charset); } catch (IOException e) { e.printStackTrace(); } return null; } }
接下來就是存在以下問題:這個使用者很有可能面臨被封號,或者登出啦。個人意見。多個使用者登入,隨機挑選cookie資訊。就像隨機挑選代理一樣。
相關推薦
爬蟲繞過“登入頁面”
當我們在寫爬蟲的時候,往往會遇到很多反爬的問題。 比如:在登入頁面設定驗證碼、掃描二維碼登入、滑動滑鼠登入、手機簡訊驗證碼登入等等。這裡介紹一種個人已經實現的方法——繞過登入頁面。這裡的繞過不是說真的可以繞過登入,除非這個系統本來就有問題,這
爬蟲自動登入訪同授權頁面
http.cookiejar模組 該模組主要的類有 Cookiejar,、 Filecookiejar、 MozillaCooklejar、 LwpCookiejar。這四個的作用分別如下 1.CookieJar:管理HTTPcookie值、儲存HTTP請求生成的cookie、向傳出的HTTP請求加
禁止瀏覽器返回登入頁面
輸入 func 需要 pre 但是 back self 彈框 hist 目前很多項目都沒有特意做這個處理,就是瀏覽器返回到登入頁面,然後點擊下一頁箭頭,可以進入,但是如果有這個需求只需要在禁止的那個頁面,輸入如下代碼即可 <script>
HTML跳轉路徑/重新登入頁面巢狀問題
HTML跳轉路徑(js中) location.href = './login.html'; /***************************************/ if (window!=top)
JavaWeb-登入的驗證與自動跳轉到登入頁面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%-- 本行程式碼可以防止亂碼出現 --%> <% String path = req
idea+maven + spring security +springmvc入門 (自定義登入頁面),附idea如何建立web專案
第一次使用idea,上午在eclipse中 學習了spring security 入門,下午試試在idea中搭建。 剛開始 我以為 直接將eclipse的 檔案 copy過來就行了,結果發現copy過來以後 各種報錯。 後來把m
vue路由設定,登入失效後跳轉到去登入頁面。登入後開啟的是你最後登入的頁面
main.js router.beforeEach((to, from, next) => { document.title=to.name; //讓頁面title顯示路由對應的name值--xlz &
[Swift4.2實際操作]九、完整例項-(7)登入頁面:建立自定義檢視及相關元件
本文將開始建立登入頁面,首先建立該頁面所需的一些自定義元件:做為登入按鈕的自定義檢視物件。在【RegLogin】組的名稱上點選滑鼠右鍵,開啟右鍵選單。【New File】->【Cocoa Touch Class】建立新檔案【RegButton.swift】Name:RegButtonSubclass:S
Selenium+Python自動化之如何繞過登入驗證碼
一、使用Fiddler抓包 1.一般登陸網站成功後,會生成一個已登入狀態的cookie,那麼只需要直接把這個值拿到,用selenium進行addCookie操作即可。 2.可以先手動登入一次,然後抓取這個cookie,這裡我們就需要用抓包工具fiddler了 3.先開啟部落格園登入介面,手動輸入賬號和密
從iframe框架進入登入頁面時跳出iframe到頂層頁面
問題描述,開發的easyui專案中使用了iframe框架。當在瀏覽器開啟一個頁面登入專案後,再開啟一個登入到專案的首頁。當從其中一個的頁面退出後,如果在另一個頁面中點選選單或其他功能時,請求會被登入攔截器攔截到登入頁面。這時,登入頁面出現在iframe框架中,而不是整個頁面跳轉到登入頁面。
vue頁面無操作10分鐘內調轉到登入頁面
思路: 頁面在設定時間內無任何操作(滑鼠的點選、滑動、路由的切換、是否請求介面等),跳轉到登入頁,在跳轉前把url存起來,點選登入的時候用。 下面介紹其中的一種方法,滑鼠的滑動時間:(用到base64加密) <template> <div id="app" @mou
在登入頁面加入隨機生成的驗證碼驗證登入
1.前端頁面,在點選驗證碼時傳送請求,獲得隨機驗證碼 <ul> <li class="user_main_text">驗證碼: </li> <li class="user_main_input"> <
JS-會員登入頁面
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>會員登入</title> <link rel="stylesheet" h
Nodejs:npm run build之後,dist\index.html頁面在火狐中可以正常顯示登入頁面並登入成功,在Chrome中可以正常顯示登入頁面,登入失敗
問題描述:Nodejs:npm run build之後,dist\index.html頁面在火狐中可以正常顯示登入頁面並登入成功,在Chrome中可以正常顯示登入頁面,登入失敗 解決方法:將打包後的dist\index.html放到http伺服器上執行就可以登入了。 總結:
爬蟲------github登入
爬蟲------github登入 import requests from bs4 import BeautifulSoup r1 = requests.get( url='https://github.com/login' ) s1 = BeautifulSoup(r1.te
SpringBoot+SpringSecurity之如何forword到登入頁面
當我們在專案中引入了SpringSecurity框架進行身份校驗的時候,如果某個請求需要使用者身份認證,那麼SpringSecurity會將使用者redirect到登入頁面。但是有些時候我們希望是forward到登入頁面而不是redirect到登入頁面,這種情況下可做如下配置: @Bean publi
day023正則表示式,re模組,簡單爬蟲和多頁面爬蟲(幹掉數字簽名證書驗證)
本節內容: 1、正則表示式 2、re模組的運用 3、簡單的爬蟲練習 一、正則表示式(Regular Expression) 正則表示式是對字串操作的⼀種邏輯公式. 我們⼀般使⽤正則表示式對字串進⾏匹配和過濾. 使⽤正則的優缺點: 優點: 靈活, 功能性強, 邏輯性強. 缺點: 上⼿難. ⼀旦上⼿, 會愛
爬蟲學習-獲取頁面使用的字符集
前面做爬蟲例子的時候列印有時會出現意外的亂碼,後來通過查詢發現是解碼字符集引起的,所以需要實現知道頁面使用的字符集才能更好的解碼 #encoding=utf-8 #匯入需要的包 字符集需要的包是chardet import requests import chardet if __nam
路由器登入頁面------提交資料的保護
今天無意中發現路由器的登入頁面在提交過程中用JS對提交的資料做過加密,但加密演算法好像是用雜湊演算法的原理,但不知具體的原理裡是什麼,望有路過的人們指點指點。 以下是頁面程式碼: <html> <head> <title>
99個漂亮的註冊和登入頁面設計(附PSD) 99個漂亮的註冊和登入頁面設計(附PSD) 99個漂亮的註冊和登入頁面設計(附PSD) 99個漂亮的註冊和登入頁面設計(附PSD)
轉 99個漂亮的註冊和登入頁面設計(附PSD) 原文地址:http://www.qianduan.net/99-beautiful-free-signin