Jump to content
Huân Hoàng

_HttpRequest: Tương tác với trang shopee.vn sau khi đã đăng nhập

Recommended Posts

requests.Cookies.Add("https://shopee.vn", "csrftoken=" + CsrfToken);
            requests.Referer = "https://shopee.vn/";
            requests.AddHeader("x-csrftoken", CsrfToken);
            response = requests.Post("https://shopee.vn/buyer/login/signup_send_vcode/", DataSendCode);
            Console.WriteLine(response.ToString());
            response =  requests.Get("https://shopee.vn/buyer/login/signup/verify_vcode/?__classic__=1");
            string  timeS = DateTime.Now.AddHours(-7.0).Ticks - 621355968000000000L) / 10000L).ToString();
            using (WebClient webClient = new WebClient())
            {
                webClient.DownloadFile("https://shopee.vn/api/v0/captcha/?" + timeS, filePath);
            }
            string capcha = capchaProcess.GetCapcha().ToString());
            string code = GetCode();
            MultipartContent DataVerify = new MultipartContent()
            {
                {new StringContent(capcha),"captcha"},
                {new StringContent(CsrfToken),"csrfmiddlewaretoken" },
                {new StringContent("1"),"operation" },
                {new StringContent(phoneNumber),"phone_canon" },
                {new StringContent(code),"vcode" },
              
            };
          //DOAN NAY KET QUA TRA VE CUA EM DANG BI ERRO
            response = requests.Post("https://shopee.vn/buyer/login/signup/verify_vcode/?method=post", DataVerify);
            Console.WriteLine(response.ToString());

Em đã add thêm timestamp nhưng kết quả vẫn ko đổi. ko biết em còn thiếu gì nữa ko

Share this post


Link to post
Share on other sites

@anhtuan242 Ẹc =.='' đang sử dụng xNet bạn lại quay sang sử dụng webclient thì làm sao mà bạn tải cho đúng captcha được. xNet tải file nhanh chóng = lệnh .ToFile thay vì ToString bạn nhé.

Mỵ đã update 2 đoạn code là request lấy sms và request tải captcha về thành file ảnh ở bài đầu tiên..bạn vào đây xem nhé :

 

 

Share this post


Link to post
Share on other sites

Thanks Bác Thiên Chi Kiều Nữ Em đã hoàn thiện việc đăng ký rồi. Bác ở đâu nếu ở Hà Nội hôm nào rảnh e mời bác chầu cafe.
Ah em còn 1 việc nữa là tắt OTP nhưng Xnet e tra có môi 2 phương thức Post và Get. mà thằng tắt Opt nó dùng Put. vậy nó có cách nào thay thế ko bác

 

9 giờ trước, anhtuan242 said:

Thanks Bác Thiên Chi Kiều Nữ Em đã hoàn thiện việc đăng ký rồi. Bác ở đâu nếu ở Hà Nội hôm nào rảnh e mời bác chầu cafe.
Ah em còn 1 việc nữa là tắt OTP nhưng Xnet e tra có môi 2 phương thức Post và Get. mà thằng tắt Opt nó dùng Put. vậy nó có cách nào thay thế ko bác

string DataPost = "{\"user\":{\"user_command\":\"new_device_login_otp\",\"hide_likes\":0,\"disable_new_device_login_otp\":true}}";            
            requests.Referer = "https://banhang.shopee.vn/";
            requests.AddHeader("accept-language", "vi-VN,vi;q=0.9,fr-FR;q=0.8,fr;q=0.7,en-US;q=0.6,en;q=0.5");
            requests.AddHeader("x-csrftoken", CsrfToken);
            requests.AddHeader("x-api-source", "pc");
            requests.AddHeader("x-requested-with", "XMLHttpRequest");
            requests.Cookies.Add("SPC_CDS", CsrfToken);                
            string link = "https://banhang.shopee.vn/api/v2/users/" + userId + "/?SPC_CDS="+ CsrfToken + "&SPC_CDS_VER=2";
            response = requests.Post(link, DataPost, "application/json");

code của e thế này có sai chỗ nào ko bác
nó trả ra là {{"errcode":2, "message": "token not found"}}

Share this post


Link to post
Share on other sites

hi @anhtuan242  :") bạn public đoạn cuối đăng ký để mỵ điền nốt vào code shopee bên topic kia với :D.

sai là sai phương thức rõ ràng rồi còn gì bạn, method PUT mà. Bạn vào bài #1 của post dưới đọc mấy dòng gần dưới cùng nhé.

 

Share this post


Link to post
Share on other sites
17 giờ trước, Thiên Chi Kiều Nữ said:

hi @anhtuan242  :") bạn public đoạn cuối đăng ký để mỵ điền nốt vào code shopee bên topic kia với :D.

sai là sai phương thức rõ ràng rồi còn gì bạn, method PUT mà. Bạn vào bài #1 của post dưới đọc mấy dòng gần dưới cùng nhé.

 

requests.Referer = "https://shopee.vn/";
            requests.AddHeader("x-csrftoken", CsrfToken);
            response = requests.Post("https://shopee.vn/buyer/login/signup/verify_vcode/?method=post", DataVerify);
 
            MultipartContent DataRegister = new MultipartContent()
            {                
                {new StringContent(CsrfToken),"csrfmiddlewaretoken" },
                {new StringContent(Password),"password" },
                {new StringContent(Password),"password2" },
                {new StringContent(Password_Hash),"password_hash" },
                {new StringContent(UserName),"username" },

            };
            String responses = requests.Post("https://shopee.vn/buyer/login/signup_register/", DataRegister).ToString(); 

 

Share this post


Link to post
Share on other sites
On 21/8/2019 at 00:45, Thiên Chi Kiều Nữ said:

@anhtuan242 đoạn code register cuối hình như thiếu parram captcha, mỵ không thấy có cái nào gửi captcha đã get được đi thì phải :v

       MultipartContent DataVerify = new MultipartContent()
                {
                    {new StringContent(capcha),"captcha"},
                    {new StringContent(CsrfToken),"csrfmiddlewaretoken" },
                    {new StringContent("1"),"operation" },
                    {new StringContent(phoneNumber),"phone_canon" },
                    {new StringContent(code),"vcode" },

                };
                    requests.Referer = "https://shopee.vn/";
                    requests.AddHeader("x-csrftoken", CsrfToken);
                    re = requests.Post("https://shopee.vn/buyer/login/signup/verify_vcode/?method=post", DataVerify).ToString();

 

  • Like 1

Share this post


Link to post
Share on other sites
On 30/8/2019 at 06:53, Thiên Chi Kiều Nữ said:

Mỵ chưa làm bao giờ :v hihi khó lắm...:167788290085124:

Em đang làm nhưng đang tắc chỗ captcha mà chưa biết giải quyết sao. Bác làm xem có cao kiến gì ko 

https://cfall.aliyun.com/nocaptcha/analyze.jsonp?a=QPXW&t=QPXW%3A1567347987525%3A0.17047523414755905&scene=register_h5&p=%7B%22ncSessionID%22%3A%22a246fc27d98%22%2C%22umidToken%22%3A%22TBCD0EDD290FF85BDC7B5673B7F81DF1C79399F3FEBBFCB58FB514285A0%22%7D&n=120%23bX1bS9zuI4fVL8GfQCoEj0v52SEWBz9pSKDvzMSM9vERx4Lp%2FJpiAJXmmGM%2FLyUBrY9jMOaNP0akOZcwsDgLhcoPgb8tKgTjzf0t6vjghhOQ4ryHG20F7bgiaP9jkGHRh%2FBaGY5LkKAvJZ1C800GbuJHhmlcNikXIkGGbCNvoo6WEw%2BvjTm5pguLjsAUjBjJamx0V6%2F2%2Bm956TzsUaPwA8zMW2aqDju10HhGxzj29VEtcYKCVhpn58Z5lPh%2BfyzQP797qR9wJraSXpGQSNjd3ezXpsMNe6dYeKZwNdx4xhry4FCK2%2FVzVXu4Y1xbvMnYCLdvcFN1taf5OwnvDoWUTX%2BhCylub%2FNKlqLgQCSiYbDAPXIbbUhpNee%2FPBFxBsUNbfMPwCnVSxtkOyzBzvWpNYmInaBIzHlXfSXnwr7LEMrNfWQZou3OBs%2Ba2CPFdkeEtvwQ88GkQ0Py0l1DktAg4BnJQ0l%2BWhyI45qWUojW%2FJygSNh9EIcIQhWU1KgVMLA1Q7NtFv4Y3SczPsjNOYdAVW9d7N263psMFVKJIfm4FgqBbqkVV6gVXgHOZLgsDBx1NrLePKSjI8Q0taJJbxTUIIb0tvLRFak%2FyXivggIFyu4gyM6pQvKZHYysAp79oHHPh2cllsx4XeTdXxdEabli3Y8QhjfCdU%2BE584%2FZ%2Fogp%2BkOa0KY0L2of%2FBKSGsVMZsDBRF%2FED%2BK50ABIDjCFfVAD5BD92JDbH7k16GrCG2TkO%2BZBQWCfi5DPpRVdXmKSeimSD4zM0xmqec0bEdYf49WbWIThgha08yIQD3YvabtzQtxtBPoDo4S8kSZpmvckTISZJg%2B0vdggnPT%2F60w9Yf6%2B4PlW5QpsZprstDhPB2idHx%3D&v=979&callback=__jsonp_728786452

 

Share this post


Link to post
Share on other sites
12 giờ trước, anhtuan242 said:

Em đang làm nhưng đang tắc chỗ captcha mà chưa biết giải quyết sao. Bác làm xem có cao kiến gì ko 


https://cfall.aliyun.com/nocaptcha/analyze.jsonp?a=QPXW&t=QPXW%3A1567347987525%3A0.17047523414755905&scene=register_h5&p=%7B%22ncSessionID%22%3A%22a246fc27d98%22%2C%22umidToken%22%3A%22TBCD0EDD290FF85BDC7B5673B7F81DF1C79399F3FEBBFCB58FB514285A0%22%7D&n=120%23bX1bS9zuI4fVL8GfQCoEj0v52SEWBz9pSKDvzMSM9vERx4Lp%2FJpiAJXmmGM%2FLyUBrY9jMOaNP0akOZcwsDgLhcoPgb8tKgTjzf0t6vjghhOQ4ryHG20F7bgiaP9jkGHRh%2FBaGY5LkKAvJZ1C800GbuJHhmlcNikXIkGGbCNvoo6WEw%2BvjTm5pguLjsAUjBjJamx0V6%2F2%2Bm956TzsUaPwA8zMW2aqDju10HhGxzj29VEtcYKCVhpn58Z5lPh%2BfyzQP797qR9wJraSXpGQSNjd3ezXpsMNe6dYeKZwNdx4xhry4FCK2%2FVzVXu4Y1xbvMnYCLdvcFN1taf5OwnvDoWUTX%2BhCylub%2FNKlqLgQCSiYbDAPXIbbUhpNee%2FPBFxBsUNbfMPwCnVSxtkOyzBzvWpNYmInaBIzHlXfSXnwr7LEMrNfWQZou3OBs%2Ba2CPFdkeEtvwQ88GkQ0Py0l1DktAg4BnJQ0l%2BWhyI45qWUojW%2FJygSNh9EIcIQhWU1KgVMLA1Q7NtFv4Y3SczPsjNOYdAVW9d7N263psMFVKJIfm4FgqBbqkVV6gVXgHOZLgsDBx1NrLePKSjI8Q0taJJbxTUIIb0tvLRFak%2FyXivggIFyu4gyM6pQvKZHYysAp79oHHPh2cllsx4XeTdXxdEabli3Y8QhjfCdU%2BE584%2FZ%2Fogp%2BkOa0KY0L2of%2FBKSGsVMZsDBRF%2FED%2BK50ABIDjCFfVAD5BD92JDbH7k16GrCG2TkO%2BZBQWCfi5DPpRVdXmKSeimSD4zM0xmqec0bEdYf49WbWIThgha08yIQD3YvabtzQtxtBPoDo4S8kSZpmvckTISZJg%2B0vdggnPT%2F60w9Yf6%2B4PlW5QpsZprstDhPB2idHx%3D&v=979&callback=__jsonp_728786452

 

Mỵ nói khó thấy mồ mà :a32:.. mấy cái token nó sinh ra từ file js của lazada..nếu bạn vọc hiểu được file đó của nó thì mới làm tiếp được :167788283418458:

Share this post


Link to post
Share on other sites
On 22/3/2019 at 15:49, Huân Hoàng said:

Sau bài viết đăng nhập Shopee :

thì iêm sẽ hướng dẫn các cách thức tương tác request với nó bởi trang này khá đa dạng trong các kiểu request gây bối rối cho người code.

 

Điều đầu tiên iêm muốn nói là ta không thể request trực tiếp đến địa chỉ cửa hàng được, ví dụ như khi request đến cửa hàng Lock&Lock Official Store có địa chỉ  https://shopee.vn/locknlockvn thì ta sẽ bị redirect ngay đến https://shopee.vn/?__classic__=1 và không có kết quả gì liên quan cửa hàng này, nguyên do là đoạn js của nó:


<script>function showBody(){document&&document.body&&(document.body.style.visibility="visible")}var SHORT_URL_MAX_LENGTH=256,pathname=location&&location.pathname;if("/"!==pathname&&pathname.length<SHORT_URL_MAX_LENGTH&&""===location.hash&&-1===pathname.indexOf("-")&&0===pathname.lastIndexOf("/")){document&&document.body&&(document.body.style.visibility="hidden"),setTimeout(showBody,5e3);var xhr=new XMLHttpRequest;xhr.open("GET","/api/v0/is_short_url/?path="+pathname.replace("/","")),xhr.setRequestHeader("Content-Type","application/json"),xhr.setRequestHeader("Accept","application/json"),xhr.onreadystatechange=function(){if(4===this.readyState)if(200===this.status)if(JSON.parse(this.responseText).error)showBody();else{var e=document.createElement("a");e.href=location.href,e.search+="?"===e.search[0]?"&__classic__=1":"?__classic__=1",location.href=e.href}else showBody()},xhr.send()}</script>
  <script>if(window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,window.PerformanceObserver){var observer=new window.PerformanceObserver(function(e){for(var r=e.getEntries(),n=0;n<r.length;n++){var a=r[n],i=a.name,t=Math.round(a.startTime+a.duration);ga("send",{hitType:"timing",timingCategory:"Performance Metrics",timingVar:i,timingValue:t})}});observer.observe({entryTypes:["paint"]})}</script>

Vì vậy, ta chỉ có thể lấy thông tin cửa hàng từ api mà trang shopee cung cấp, và iêm sẽ trang bị cho các thým đoạn code sau để lấy thông tin của một cửa hàng:


$Info = Shopee_ShopInfo('https://shopee.vn/locknlockvn/', True)

Func Shopee_ShopInfo($iURL, $vFullInfo = True)
	Local $ShopName = StringRegExp($iURL, 'https://shopee.vn/([^\/]+)', 1)
	If @error Then Return SetError(1)
	Local $rq = _HttpRequest(2, 'https://shopee.vn/api/v2/shop/get?username=' & $ShopName[0])
	If $vFullInfo Then Return _HTMLDecode($rq)
	Return StringRegExp($rq, '"shopid"\s*?:\s*?(\d+)', 1)[0]
EndFunc

Hàm Shopee_ShopInfo sẽ trả về dữ liệu phụ thuộc tham số $vFullInfo, nếu $vFullInfo = True thì sẽ trả về đầy đủ thông tin như sau:

sFDvAHa.png

 

Còn nếu để $vFullInfo = False thì sẽ chỉ trả về ShopID

 

------------------------------------------------------------------------------------------------------------------------------------------

 

OK, giờ vào vấn đề chính, khi ta request tương tác với shopee thì ta để ý kỹ những điều này khi đọc Live HTTP Headers hoặc F12 Dev Tools Trình duyệt:

- Nếu tương tác với trang shopee.vn thì thường có đi kèm với csrftoken trong header và cookie.

- Nếu tương tác với trang banhang.shopee.vn thì thường có đi kèm với SPC_CDS trong param của URL và cookie.

 

Bây giờ ta thử một số tương tác sau:

 

1/ Request nhấn nút "Theo Dõi" một cửa hàng:

Ví dụ ta request "Theo Dõi" cửa hàng Lock&Lock Official Store tại địa chỉ sau:  https://shopee.vn/locknlockvn , ta bắt request sẽ được thế này:

- Số 55771655 trong URL là ShopID, cái này thì chỉ cần sử dụng hàm Shopee_ShopInfo đã cung cấp ở trên với $vFullInfo = False là xong.

- Ta thấy có xuất hiện csrftoken ở header và cookie → Khi request ta nhớ nạp cả 2 cái csrftoken này vào tham số $Cookie và $Header của hàm _HttpRequest thì mới request thành công. Như đã nói ở bài hướng dẫn login shopee, csrftoken chỉ là 1 chuỗi ngẫu nhiên nên ta có thể lấy luôn csrftoken mà ta bắt được để nạp vào, hoặc sử dụng kết quả trả về của hàm Shopee_Login mà iêm đã cung cấp (Xin nhắc lại, hàm Shopee_Login($Username, $Password) sẽ trả về mảng 5 phần tử: [0] Cookie chứa csrftoken, [1] Header chứa csrftoken, [2] UserName, [3] ShopID, [4] ID)

Vậy ta có code:

Nội dung ẩn

  • Bạn cần Reaction hoặc trả lời chủ đề này để thấy nội dung bị ẩn.

 

 

2/ Thay đổi trạng thái "Xác minh đăng nhập OTP":

Để thay đổi trạng thái xác nhận OTP thì ta phải đăng nhập vào trang https://banhang.shopee.vn/account/signin rồi sau đó vào Cài Đặt rồi vào Thiết Lập Shop , và ta bắt được request khi tắt bật nút trượt Xác thực OTP:
 

- Method request là PUT chứ không phải POST, cần chú ý.

- Ta thấy sẽ xuất hiện SPC_CDS trong param của URL và cookie như ghi chú đã nói ở phía trên. Thì nó ở đâu ra ? Nó sinh ra từ js và nó cũng như csrftoken có liên quan đến Session của shopee, vì thế phải nạp nó vào cả 2 chỗ thì mới request thành công và giá trị của nó ta để là số 1 là được rồi, khỏi cần dông dài e850f29a-d704-48f0-8227-c9452adfc224 như request bắt được ở trên chi cho mệt.

118343558 trong URL là ID của tài khoản, nó là phần tử thứ 4 trong mảng trả về của hàm Shopee_login đấy. 

- "disable_new_device_login_otp" trong Data2Send: nếu là false thì Bật OTP, nếu là true thì tắt OTP

Ta có code:

Nội dung ẩn

  • Bạn cần Reaction hoặc trả lời chủ đề này để thấy nội dung bị ẩn.

 

 

3/ Chat với Shop:

Chat shopee dựa trên WebSocket thì _HttpRequest đã hỗ trợ tương tác WebSocket trên Win10 (Win8 trở xuống WinHttp không hỗ trợ WebSocket)
Code như thế này:

Nội dung ẩn

  • Bạn cần Reaction hoặc trả lời chủ đề này để thấy nội dung bị ẩn.

 

Trong đó $from_userid,  $to_userid ,  $ShopID,  $itemid dễ dàng tìm được nên iêm sẽ không code cụ thể nữa, ai thích tìm hiểu thì tự code nhoé ($from_userid thì lấy từ kết quả trả về của hàm Shoppe_Login. $to_userid ,  $ShopID thì từ kết quả hàm Shopee_ShopInfo ...)

 

Vậy là iêm đã lướt qua một số request cơ bản tương tác với Shopee, chúc các thým tìm hiểu vui vẻ và thích thú với nhánh HTTP Request này :a08:

Làm sao để lấy cái 

path:
/api/v2/login/?SPC_CDS=b459e91b-dacb-4255-98a7-4a4998a74bff&SPC_CDS_VER=2 bác nhỉ.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...