Vấn đề HttpRequest "Get" trả về Response khác với Reponse thao tác trên trình duyệt

Liên hệ QC

ongke0711

Thành viên gắn bó
Tham gia
7/9/06
Bài viết
2,260
Được thích
3,001
Giới tính
Nam
Chào các bạn,
Tôi gặp một vấn đề là khi dùng Http request - GET thì nó trả về cái Response nhưng kiểm tra lại thì khác với Response tôi thao tác trực tiếp trên trang web.
- Tìm theo MST, CCCD dùng "https://masothue.com/Ajax/Search/" thì chạy rất nhanh nhưng khi tìm bằng tên thì không chạy.
- Tôi dùng "https://masothue.com/Search/?q" & chuỗi tên thì lại trả về Response sai. Đã thử khai báo các header đúng như trên trình duyệt cũng không sửa được lỗi.

File đính kèm bên dưới. Nhờ các bạn hướng dẫn tìm ra nguyên nhân của vấn đề trên.
Cảm ơn.


Mã:
Dim js As Object
    Set js = CreateObject("Scripting.Dictionary")

    Dim formData As String, sTenCty As String, res As String
    Const url As String = "https://masothue.com/Search/"

    res = httpPost("https://masothue.com/Ajax/Token", "")
    Set js = JsonConverter.ParseJSON(res)

    sTenCty = UCase(Sheet1.Range("A1"))
    formData = "?q=" & URLEncode(CStr(sTenCty), True) & "&type=enterpriseName&token=" & js("token") & "&force-search=1"
    Debug.Print url & formData

    res = httpGet(url & formData)
    Debug.Print res

Mã:
Function httpGet$(url$)
    'With CreateObject("WinHttp.WinHttpRequest.5.1")
    With CreateObject("MSXML2.serverXMLHTTP.6.0")
        .Open "GET", url, False
        .setRequestHeader "User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36 Edg/90.0.818.51"
        .setRequestHeader "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"
        .send
        httpGet = .responseText

        Dim getStatus As String
        If Err.Number <> 0 Then
            'khong co phan hoi tu server
        Else
            getStatus = .Status
            If getStatus <> "300" And getStatus <> "200" Then
                Debug.Print "Some problems raised."
            Else
                Debug.Print "Connected."
            End If
        End If

        On Error GoTo 0
    End With
End Function
 

File đính kèm

Lần chỉnh sửa cuối:
Ồ, ngon lành xịn quá.
Cho em hỏi sao anh biết được:
Mã:
Const Url As String = "https://timfshare.com/api/v1/string-query-search?query="
Hay công cụ nào, anh chia sẻ thêm với ạ.

Thêm đoạn code Loop JSON để lấy link url.

JavaScript:
i = 1
    For Each Item In js("data")
        Sheet1.Cells(i, 2).Value = Item("url")
        i = i + 1
    Next

Screen Shot 2024-08-07 at 11.07.21.png

Screenshot at Aug 07 11-13-52.png
 
Lần chỉnh sửa cuối:
Upvote 0
Bên masothue vn họ sử dụng cách mới để chặn yêu cầu từ HTTP.
Nên cần sử dụng trình duyệt Web để tải, nhưng vẫn bị mã số thuế vn họ kiểm duyệt, họ chủ yếu cho người dùng xem quảng cáo, để họ có thu nhập. Nhưng keo kiệt với người dùng.

Tôi đã viết cả 2 bản nguồn Tổng cục thuế và masothue vn, tại Tài nguyên diễn đàn để mọi người cần sử dụng để tra cứu.

Ngày trước tôi viết Http Request, giúp họ tiết kiệm chi phí chỉ với 2, 3 request là tải được thông tin, giờ do họ quá keo và khắc khe, tôi đã chuyển sang trình duyệt, bây giờ họ và người dùng đồng thời phải tốn kém chi phí gấp nhiều lần khi cần tải cả một trang web hoàn chỉnh để tải 1 thông tin. Tôi không hiểu tại sao họ lại keo đến vậy, 1 bên là ăn tiền quảng cáo với hàng chục quảng cáo trên 1 trang, 1 bên là nhà nước.
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom