国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

愛回收網站,js請求過程分析

cooxer / 1919人閱讀

摘要:愛回收網站,在網站中大量使用了動態改變元素,而且請求的參數使用的是加密。工具火狐瀏覽器,開發者模式前面各個分類的分析還是比較簡單,所需內容都在網頁源碼中有,可以直接找到。主要是請求價格的過程有點復雜。

aihuishou

最近在qq群里看到有個小伙伴在問愛回收網站怎么爬取手機價格信息。

愛回收網站,在網站中大量使用了js動態改變DOM元素,而且請求的參數使用的是paylaod加密。我們在分析網站的時候看不到參數,也就分析不出來請求參數的規律,這個問題可以通過fiddler抓包工具解決。剛開始分析確實有點懵,在此記錄下我的分析過程。

工具;火狐瀏覽器,開發者模式 Fiddler

前面各個分類的分析還是比較簡單,所需內容都在網頁源碼中有,可以直接找到。主要是請求價格的過程有點復雜。

首先看看網站是如何發送POST請求價格的
我們以http://www.aihuishou.com/prod...:

必須選擇要提交的選項才能提交查詢價格,這里我們隨便選擇幾個選項,查找買免費詢價的元素看到href是:

重點來了這里點擊免費詢價之后,網站直接跳轉到價格的頁面網址是:http://www.aihuishou.com/pc/i...,我們來找下http://www.aihuishou.com/user...,

這時候發現沒有網址的請求,這時猜測是重定向了。這時候我們需要知道請求了什么導致重定向,打開fiddler,重新回到剛才,點擊免費詢價。然后在fiddler中找到發送的http://www.aihuishou.com/user...:

可以發現是個post請求,返回的是一個json格式的數據,我們看到里面有個redirectUrl,參數是"/pc/index.html#/inquiry/1516201064093351267”, 看到這個心中有沒有感到一喜,對比這個和跳轉后的頁面,發現驚奇的相似。訪問下這個網址,正是我們要找的價格的頁面。

此時是不是有點大功告成的感覺,然后我們在頁面中提取我們要的數據,結果并沒有發現,這時猜測可能是請求的是json數據,然后動態加載到頁面中的,這這是我們通過火狐瀏覽器的開發者功能,找到了真正數據的請求:

發現后面的數字就是url后面的數字,這是我們重新構造這個http://www.aihuishou.com/port...。

現在整個過程明朗了,但是還有一個問題,最初的POST請求的參數怎么來的, 我們回過頭重新看下http://www.aihuishou.com/user...。

在火狐開發者模式下,我們可以看到免費詢價這個元素對應觸發的click事件,

function(a) {
a.preventDefault();
var l = $(this);
if (!l.hasClass("disabled") && W) {

if (!d.hasClass("hidden")) {
  var c = $.trim(o.val());
  if (!s(c)) return;
  n.imgCaptcha = c
}
n.PriceUnits = e(), ahs.PopWindow.Loading(!0), $.post(r, n, function(e) {
  ahs.PopWindow.Hide(), e.code ? 3001 === e.code ? i(e.data.captchaUrl) : 3002 === e.code ? (t(e.data.captchaUrl), alert("驗證碼有誤")) : e.data.redirectUrl && (location.href = e.data.redirectUrl) : location.href = e.data.redirectUrl
})

}
}

可以看到js中有個post請求,請求的參數是r, n,r應該是請求的url,n是對應的POST參數,那么就要找到這個r, n,在js文件中,我們可以看到定義r, n參數的代碼,就在這個函數的上面定義了:
var r = $submit.attr("href"),

n = {
  AuctionProductId: $submit.data("pid"),
  ProductModelId: $submit.data("mid")
};

這里我們可以看到r正是submit元素的href的值,n是submit元素屬性中包含"pid", "mid"的值,我們再看看fiddler抓到的參數應該有三個,還有一個priceUnits參數,我們js代碼,發現,n.PriceUnits = e(),這個便是
第三個參數的由來,在js中搜索function e,可以找到 函數e的定義:
function e() {

  var e = [
  ],
  t = [
  ];
  return $(".base-property").find("li.checked").each(function () {
    e.push($(this).data("id"))
  }),
  F ? (e = a(e, t), e = e.concat(O), e.join(";"))  : (e = a(e, O), $(".appearance-property").find("li.checked").each(function () {
    t.push($(this).data("id"))
  }), c.filter(".function-property").find("li").each(function () {
    var e = $(this);
    t.push(e.hasClass("checked") ? e.data("id")  : e.data("default"))
  }), e = e.concat(t), e.join(";"))
}

大致的意思就是找到對應元素下包含"id"的屬性的值加入到e的類表中,然后合并列表e,t,最后在用";"連接各元素。

這樣,POST請求的三個參數都找到了,這個網站訪問過快會有驗證碼,可以加代理繞過代理驗證。

至此,整個詢問價格的流程分析完成,還是由衷的感覺整個爬蟲懂點js還是好處多多的! 如果想讀源碼,請移步github,鏈接是:https://github.com/allenshen3...

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/94994.html

相關文章

  • 回收網站js請求過程分析

    摘要:愛回收網站,在網站中大量使用了動態改變元素,而且請求的參數使用的是加密。工具火狐瀏覽器,開發者模式前面各個分類的分析還是比較簡單,所需內容都在網頁源碼中有,可以直接找到。主要是請求價格的過程有點復雜。 aihuishou 最近在qq群里看到有個小伙伴在問愛回收網站怎么爬取手機價格信息。 愛回收網站,在網站中大量使用了js動態改變DOM元素,而且請求的參數使用的是paylaod加密。我們...

    MockingBird 評論0 收藏0
  • Android 2019最新面試實戰總結

    摘要:內存泄漏當應用內部不再需要某個實例后,但是這個對象卻仍然被引用,這個情況就叫做內存泄露。安卓虛擬機為每一個應用分配一定的內存空間,當內存泄露到達一定的程度就會造成內存溢出。點擊登錄跳轉頁面中所有操作都與用戶密切相關,是 Android: 今日頭條屏幕適配的原理? 1:首先計算出 density,計算公式:當前設備屏幕總寬度(單位為像素)/ 設計圖總寬度(單位為 dp) = densit...

    Caicloud 評論0 收藏0
  • Python爬蟲學習路線

    摘要:以下這些項目,你拿來學習學習練練手。當你每個步驟都能做到很優秀的時候,你應該考慮如何組合這四個步驟,使你的爬蟲達到效率最高,也就是所謂的爬蟲策略問題,爬蟲策略學習不是一朝一夕的事情,建議多看看一些比較優秀的爬蟲的設計方案,比如說。 (一)如何學習Python 學習Python大致可以分為以下幾個階段: 1.剛上手的時候肯定是先過一遍Python最基本的知識,比如說:變量、數據結構、語法...

    liaoyg8023 評論0 收藏0
  • 瀏覽器顯示及交互背后的原理

    摘要:瀏覽器顯示及交互背后的原理引子因為筆者愛編程的光頭強近期在寫一本關于小程序入門的書籍。不基于瀏覽器背后的運行原理,是很難說清楚虛擬被引入的真正原因和最大好處的。它是瀏覽器的核心部分。 瀏覽器顯示及交互背后的原理 引子 因為筆者(愛編程的光頭強)近期在寫一本關于小程序入門的書籍。其中有一章是介紹虛擬DOM的,它是位于Javascript和真正DOM之間的一層緩存層。為什么引入它,為什么它...

    hatlonely 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<