anhtuan242 1 Đã viết 18/08/2019 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 Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
Thiên Chi Kiều Nữ 959 Đã viết 18/08/2019 @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é : Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
anhtuan242 1 Đã viết 19/08/2019 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"}} Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
Thiên Chi Kiều Nữ 959 Đã viết 19/08/2019 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é. Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
anhtuan242 1 Đã viết 20/08/2019 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(); Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
Thiên Chi Kiều Nữ 959 Đã viết 20/08/2019 @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 Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
anhtuan242 1 Đã viết 23/08/2019 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(); 1 Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
anhtuan242 1 Đã viết 29/08/2019 On 21/8/2019 at 00:45, Thiên Chi Kiều Nữ said: Bác Thiên Chi Kiều Nữ bác làm register account lazada bao giờ chưa ạ. Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
Thiên Chi Kiều Nữ 959 Đã viết 29/08/2019 7 giờ trước, anhtuan242 said: Mỵ chưa làm bao giờ :v hihi khó lắm... Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
anhtuan242 1 Đã viết 1/09/2019 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... 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 Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
Thiên Chi Kiều Nữ 959 Đã viết 2/09/2019 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à .. 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 Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
pvhnamdinh 0 Đã viết 2/09/2019 Thank chủ thread ạ Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
LacHong 0 Đã viết 3/09/2019 cảm ơn Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
Santi Srabou 0 Đã viết 26/09/2019 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: 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 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ỉ. Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites
Đồn Vũ 0 Đã viết 11/10/2019 thank chủ top Trích dẫn Chia sẻ bài đăng này Link tới bài viết Share on other sites