1. 程式人生 > >模擬瀏覽器訪問增加頁面瀏覽數量

模擬瀏覽器訪問增加頁面瀏覽數量

因為剛開始開部落格並沒有什麼瀏覽量,所以心中一時想著怎麼變成增加自己的瀏覽量,於是參考了網上的例子寫了個程式,主要是用java訪問指定的網頁,當然只是一時興起,沒有惡意。

我開始只是採用簡單的URL訪問頁面,但是一般網站會對這種純爬蟲或者類爬蟲程式拒絕,我就是一開始被拒絕了,並被網站警告 ,因此,需要模擬瀏覽器訪問才行,瀏覽器訪問使用的HTTP協議,可以在程式中加入這個請求報頭,至於報頭內容,谷歌瀏覽器按F12後有個network選項,裡面可以看到

說多了無用,直接上程式

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;

public class visitWebsite {
    /**
     * 向指定URL傳送GET方法的請求
     * 
     * @param url
     *            傳送請求的URL
     * @param param
     *            請求引數,請求引數應該是 name1=value1&name2=value2 的形式。
     * @return URL 所代表遠端資源的響應結果
     */
    public static String sendGet(String url, String param) {
        String result = "";
        BufferedReader in = null;
        String urlNameString;
        try {
            if(!param.equals("")){
            	urlNameString = url + "?" + param;
            }else{
            	urlNameString=url;
            }
            URL realUrl = new URL(urlNameString);
            // 開啟和URL之間的連線
            URLConnection connection = realUrl.openConnection();
            // 設定通用的請求屬性,瀏覽器請求報頭,不然會被有的網站檢測到惡性爬網頁而被禁止訪問
            connection.setRequestProperty("accept", "*/*");
            connection.setRequestProperty("connection", "Keep-Alive");
            connection.setRequestProperty("user-agent",
                    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36");
            // 建立實際的連線
            connection.connect();
            // 獲取所有響應頭欄位
            Map<String, List<String>> map = connection.getHeaderFields();
            // 遍歷所有的響應頭欄位
            for (String key : map.keySet()) {
                System.out.println(key + "--->" + map.get(key));
            }
            // 定義 BufferedReader輸入流來讀取URL的響應
            in = new BufferedReader(new InputStreamReader(
                    connection.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
            System.out.println("傳送GET請求出現異常!" + e);
            e.printStackTrace();
        }
        // 使用finally塊來關閉輸入流
        finally {
            try {
                if (in != null) {
                    in.close();
                }
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }
        return result;
    }

    /**
     * 向指定 URL 傳送POST方法的請求
     * 
     * @param url
     *            傳送請求的 URL
     * @param param
     *            請求引數,請求引數應該是 name1=value1&name2=value2 的形式。
     * @return 所代表遠端資源的響應結果
     */
    public static String sendPost(String url, String param) {
        PrintWriter out = null;
        BufferedReader in = null;
        String result = "";
        try {
            URL realUrl = new URL(url);
            // 開啟和URL之間的連線
            URLConnection conn = realUrl.openConnection();
            // 設定通用的請求屬性
            conn.setRequestProperty("accept", "*/*");
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("user-agent",
                    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36");
            // 傳送POST請求必須設定如下兩行
            conn.setDoOutput(true);
            conn.setDoInput(true);
            // 獲取URLConnection物件對應的輸出流
            out = new PrintWriter(conn.getOutputStream());
            // 傳送請求引數
            out.print(param);
            // flush輸出流的緩衝
            out.flush();
            // 定義BufferedReader輸入流來讀取URL的響應
            in = new BufferedReader(
                    new InputStreamReader(conn.getInputStream()));
            String line;
            while ((line = in.readLine()) != null) {
                result += line;
            }
        } catch (Exception e) {
            System.out.println("傳送 POST 請求出現異常!"+e);
            e.printStackTrace();
        }
        //使用finally塊來關閉輸出流、輸入流
        finally{
            try{
                if(out!=null){
                    out.close();
                }
                if(in!=null){
                    in.close();
                }
            }
            catch(IOException ex){
                ex.printStackTrace();
            }
        }
        return result;
    }    
    
    
    public static void main(String[]args) throws InterruptedException{
    	
    	int i=0;
    	while(i<1000){
    		visitWebsite.sendGet("http://the page you are going to visit", "");
    		/*
    		 * 一般網站如果檢測到某個iP短時間內過頻繁訪問也會拒絕,因此這裡設定每30秒請求一次
    		 * 
    		 * */
    		Thread.sleep(30*1000);
    		i++;
    	}
    }
}

值得說明的是,即使這樣,可以在一段時間內增加網站的訪問量,但是我測試的網站還是會因為同一個IP在一段時間內過於頻繁訪問而被要求輸入驗證碼,不然IP會被禁止訪問,在輸入驗證碼後會解禁IP,聽說可以使用動態路由訪問,這方面我不太熟,所以不做解釋。

相關推薦

模擬瀏覽器訪問增加頁面瀏覽數量

因為剛開始開部落格並沒有什麼瀏覽量,所以心中一時想著怎麼變成增加自己的瀏覽量,於是參考了網上的例子寫了個程式,主要是用java訪問指定的網頁,當然只是一時興起,沒有惡意。 我開始只是採用簡單的URL訪問頁面,但是一般網站會對這種純爬蟲或者類爬蟲程式拒絕,我就是一開始被拒絕了,並被網站警告 ,因此,需要模擬瀏

解決微信瀏覽器訪問手機頁面:您訪問頁面無手機頁面,是否進一步訪問電腦版?

hash asc meta 微信瀏覽器 not ont 也會 clas split dz論壇總是報502沒辦法了,發到這裏備份。 這個問題困擾樓主很長時間了,具體原因因為不懂php沒去研究源碼,所以只能用js解決了。也就是大家常見的通過修改source\language\l

WEB移動端開發中,區域網內手機瀏覽器訪問電腦頁面,實時檢視程式碼除錯結果

痛點:在進行移動端頁面開發時,經常需要用手機檢視開發的頁面效果。雖然瀏覽器自帶模擬器,但是各個手機相容問題除錯以及操作效果除錯還是需要上真機。 解決途徑: 1、將程式碼扔到伺服器,通過連線伺服器訪問頁面除錯 2、採用內網穿透,將自己的電腦當成伺服器主機,手機訪問電腦伺服器。之前我用過NA

瀏覽器訪問一個頁面的步驟詳解

面試時經常被問到:瀏覽器訪問一個頁面的時候背後的步驟是怎樣的?我往往是把HTTP請求和響應講了一下。現在想想,感覺僅僅回答HTTP請求和響應有點太窄了。所以,這裡主要從計算機網路的角度將瀏覽器訪問一個頁面的背後的過程進行一個較為詳細的解讀。域名->IP當在瀏覽器中訪問一

解決瀏覽器訪問Applet頁面時不能啟動JRE執行環境

發現瀏覽器打不開含有Applet的頁面: your security settings have blocked an application from running with an out-of-date or expired version of java 以下是解

file_get_contents模擬瀏覽器訪問的時候亂碼

<p>亂碼有幾種可能如下:</p><p>1.頁面能獲取過來,內容亂碼:可以採用iconv()和mb_convert_encoding()函式進行轉碼</p><p><pre name="code" class=

用chrome模擬微信瀏覽器訪問需要OAuth2.0網頁授權的頁面

mil col cnblogs bre letter 型號 默認 刷新 build 現在很流行微信網頁小遊戲,用html5制作的小遊戲移過來,可以放到微信瀏覽器中打開,關鍵是可以做成微信分享朋友圈的形式,大大提高遊戲的傳播,增強好友的遊戲互動。 微信瀏覽器中打開網頁遊戲效

Python模擬瀏覽器實現網頁訪問

Python 模擬瀏覽器訪問 模擬瀏覽器請求數據: import socket # 創建TCP鏈接 tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # DNS 解析和鏈接HTTP服務器 tcp_socket.connect

web頁在微信中訪問增加遮罩層 右上角彈出在瀏覽器中打開

osi nis scrip div ttr auto nav csdn img https://blog.csdn.net/zgsdzczh/article/details/79744838 web頁在微信中訪問增加遮罩層 右上角彈出在瀏覽器中打開 <sty

使用Selenium模擬瀏覽器行為!室友原來天天都在瀏覽這些網站!

前幾天有位讀者問我一個爬蟲的問題,就是在爬去百度貼吧首頁的熱門動態下面的圖片的時候,爬取的圖片總是爬去不完整,比首頁看到的少。原因他也大概分析了下,就是後面的圖片是動態載入的。他的問題就是這部分動態載入的圖片該怎麼爬取到。 分析 他的程式碼比較簡單,主要有以下的步驟:使用 Be

pc端、手機端瀏覽器、微信內.點選返回鍵,返回到上一個頁面瀏覽的位置的實現

第一步:需要注意引入的js jquery.js jquery.cookie.js 第二部:在被返回的前一頁加入以下程式碼 <script type="text/javascript"> $(function () {

使用Selenium模擬瀏覽器登入,並獲取頁面資訊

(一)、Selenium1和Selenium2介紹 Selenium1.0是一個基於瀏覽器的開源自動化測試工具,它中可以使用多種語言程式設計,在執行Selenium1.0程式之前,需要先啟動selenium server服務,及selenium remote

使用selenium模擬瀏覽器操作頁面及問題處理(採用Java語言)

     有一個需求是:頁面上有一批測試資料要刪除,一共10萬條資料,每頁顯示20條,一共5000頁,手動刪除的操作一般是先點選全選本頁20條,點選"刪除"按鈕,再點選彈出"確認"按鈕完成一次操作。人工點選太費時費力,本來寫了一個js指令碼,每隔10秒定時去操作,把指令碼放在

【JavaScript】通過JavaScript的方式,如果手機瀏覽器訪問PC版頁面,自動跳轉到手機版頁面

這個其實根本不用自己寫,因為在網上就有一個寫的非常不錯的js。 做到如下效果,如果是PC、平板訪問這個頁面,則顯示PC版的頁面,如果是手機訪問這個頁面則跳到手機版的頁面,同時不載入PC版頁面,直接跳轉。 首先,目錄結構如下: 其中JS資料夾中的uaredirect.js

【HttpClient4.5實訓】一.HttpClient4.5模擬瀏覽器GET請求訪問新浪網(非原文教程)

更多HttpClient4.5教程請訪問點選開啟連結 ===================================================================== 問題:

[爬蟲]python自動呼叫瀏覽器訪問網頁增加訪問量

該程式主要是為了增長訪問量而寫的,主要針對一些訪問量與使用者資訊無關的網頁,比如CSDN。當然前提是python安裝相應的庫。原理很簡單,沒有用到什麼高階的爬蟲技術,沒有用到正則表示式什麼的。其實就是呼叫你的瀏覽器,然後程式自動幫你開啟你的部落格網頁,隔一段時間自動關閉,以此

有一個HTTP的伺服器,通過瀏覽器訪問的時候發現打不開的頁面(80埠),怎麼去抓包分析?步驟和存在的可能原因?

原因:.可能80埠本身無法訪問或者被佔用。 網站無法開啟情況發生的原因較多,可能是由於路由或電腦導致,可能是由於伺服器問題導致。 (1)ping該網路,如果能通說明網站是沒有問題的,如果失敗則可能是網路原因,也有可能是網站問題,逐一排查;如果能開啟其他網站,

php 瀏覽器不快取頁面,後退或history.go(-1)是載入新頁面同時也是瀏覽不留痕

       //禁止快取頁面 防止訂單頁面不給錢直接返回鍵 導致購物車中生成訂單的商品還存在         $time = time() - 60*60*24;// or filemtime($fn), etc            header('Last-Modif

瀏覽器訪問tomcat,頁面訪問出錯404,405,500

在剛開始進行Web應用開發的時候,經常看見頁面出現404這個數字,我們一般會稱之為執行產生了404錯誤。類似於404這個數字,還有可能在頁面上看到405、500這兩個數字,他們都是伺服器執行完客戶端的請求以後,返回給客戶端的一個關於執行結果的狀態編碼說明。 如果

httpClient模擬瀏覽器自帶cookie傳送訪問請求

第一種方式:在get請求中手工增加一個cookie欄位 //建立httpClienthttpClientBuilder=HttpClientBuilder.create();CloseableHttpClient httpClient=httpClientBuilder.