Làm thế nào để phân tích một liên kết để tìm ra liên kết thực tế


13

Đôi khi khi tải xuống một cái gì đó, tôi thấy các liên kết không phải là liên kết trực tiếp đến các tập tin.

Ví dụ: đây là liên kết để tải xuống tệp PDF:

http://ishare.down.sina.com.cn/15181391.PDF?ssig=2jEFaNQs7K&Expires=1312905600&KID=sina,ishare&IP=1312761745,68.50.222.

Tôi đã tự hỏi làm thế nào để tìm / hack liên kết thực tế (Tức là http: //*.PDF) vào tập tin?

Các tên cho các kỹ thuật tương tự và tương tự không hiển thị các liên kết trực tiếp là gì? Một số tài liệu tham khảo, chẳng hạn như Wikipedia, ...?


1
Đã sửa liên kết của bạn. Nhấn vào đây editđể xem nguồn markdown cho cách tôi đã làm nó.
Joel Coehoorn

Câu trả lời:


3

Vâng, đôi khi .

Có hai điều thường xảy ra. Liên kết của bạn không hoạt động nữa, vì vậy tôi không chắc kịch bản thực tế trong trường hợp này, vì vậy tôi sẽ tóm tắt trên một liên kết khác.

Chuyển hướng HTTP

Đây là những gì bạn thấy với Bit.lyvà các dịch vụ khác. Những gì sau đó làm là cung cấp một phản hồi chuyển hướng HTTP. Khi bạn truy cập http://bit.ly/oH3410, nó sẽ chuyển hướng đến URL thực tế. Đôi khi một URL chuyển hướng đến một URL khác. Bạn có thể thấy điều này xảy ra nếu bạn cắm URL vào http://web-sniffer.net/ hoặc bằng cách sử dụng, [curl][1] -I http://bit.ly/oH3410bạn sẽ thấy trả về 301 chỉ đến một Vị trí mới.

Vì vậy, để đối phó với Chuyển hướng HTTP, bạn chỉ cần lặp một yêu cầu HTTP Head cho đến khi bạn ngừng nhận được phản hồi trong 300 giây (hy vọng nhận được 200). Hãy nhớ rằng có thể họ sẽ chuyển hướng trong một vòng lặp, điều này sẽ không bao giờ kết thúc. Bạn có thể làm điều này với CURL hoặc bất kỳ công cụ HTTP nào.

Trang tải về

Đây là những gì hầu hết các trang web tải về sử dụng. Bạn nhấp vào liên kết tải xuống và nó đưa bạn đến một trang có rất nhiều quảng cáo và nói "Quá trình tải xuống của bạn sẽ bắt đầu ngay". [ Ví dụ ]. Với những điều này, bạn có thể cố gắng phân tích liên kết trực tiếp thực tế từ URL, nhưng đó sẽ là trang web cụ thể và hầu hết các trang web sẽ không bao gồm nó để ngăn bạn phá vỡ nó. Điều này được thực hiện thông qua một meta http-equiv="refresh"thẻ trong tiêu đề hoặc JavaScript (phổ biến nhất). Các JS thường có một dự phòng tiêu đề mặc dù.

Có một giải pháp mặc dù. Nếu bạn nhìn vào nguồn trên trang tải xuống, bạn sẽ thường thấy một <meta http-equiv="refresh">thẻ (thường là trong <noscript>thẻ) với thuộc tính URLchỉ ra tải xuống thực tế. Vì vậy, sử dụng CURL (hoặc bất kỳ công cụ HTTP nào khác) để tải xuống trang, phân tích nó ra và lấy giá trị đó. Một trang web có thể loại trừ điều này mặc dù nếu họ muốn thực sự khó chịu, do đó yêu cầu bạn phải có JavaScript để tải xuống các tệp.

Có lẽ có một khối JavaScript liên kết đến việc tải xuống. Nó có thể bị xáo trộn hoặc được liên kết từ một URL khác. Số dặm của bạn có thể thay đổi khi cố gắng phân tích ra. Cũng có thể có một "liên kết trực tiếp" trên trang. Bạn có thể thử một vài kỹ thuật để tìm ra điều đó, nhưng một lần nữa có thể bị xáo trộn thông qua JavaScript hoặc thậm chí thiếu tất cả cùng nhau.


11

Nó có thể là không thể. Các trang web có thể cung cấp cho bạn thông qua một trăm chuyển hướng trước khi bạn nhận được tệp.

Ngoài ra, javascript có thể được sử dụng để đưa ra các liên kết dựa trên URL được cung cấp cho máy chủ.


Cảm ơn! Các tên cho các kỹ thuật tương tự và tương tự không hiển thị các liên kết trực tiếp là gì? Một số tài liệu tham khảo, chẳng hạn như wikipedia, ...?
Tim

1
Chỉ cần chuyển hướng. không biết bất kỳ kỹ thuật nào khác. Xem tại đây
soandos

Khi các liên kết đến các tệp và như trái ngược với các trang thông thường, nó thường được gọi là chống đỉa .
Synetech

7

Trang web có thể được viết kịch bản và khi nhận được một lệnh nhất định (URL có thể truyền lệnh), thì nó có thể trả về tệp PDF (hoặc một số tệp khác) mà không cần chuyển hướng. Đó là một thứ phía máy chủ và phụ thuộc vào cách trang web được mã hóa. Nếu không thực sự yêu cầu liên kết đó từ máy chủ, bạn không thể tìm ra cách lấy tệp. Và đôi khi ngay cả khi bạn biết URL trực tiếp, bạn có thể không có quyền truy cập vào liên kết trực tiếp. Một số trang web được mã hóa để các liên kết trực tiếp sẽ không hoạt động.


1
Chính xác. Bổ sung nhỏ: khi một máy khách đang truy cập một liên kết tối nghĩa như thế và máy chủ muốn nói với khách hàng rằng đây thực sự là một tệp pdf và nó phải được lưu dưới dạng tệp pdf - máy chủ sẽ thông báo cho khách hàng thông qua HTTP Kiểu nội dung tiêu đề.
vtest

3

Đây là khá nhiều URL "thật" như đối với các trang web được bảo vệ tốt, bạn phải gửi URL đầy đủ cho máy chủ để xác thực yêu cầu của bạn. Bạn có thể được chuyển đến một URL khác sau đó, nhưng thông thường nó sẽ là một lần. Nói cách khác, các trang web tải tập tin này sẽ không bao giờ cung cấp cho bạn một liên kết trực tiếp có thể có.

Trong URL cụ thể này, các tham số, được bảo vệ bằng chữ ký số, liệt kê rõ ràng giới hạn thời gian và IP của trình tải xuống. Đối với một trang web có mức độ năng lực này, không có khả năng sẽ có các liên kết trực tiếp bị rò rỉ.


3

Các liên kết chuyển hướng này cũng thường được liên kết với trạng thái phiên. Họ sẽ thực hiện một số kiểm tra riêng tư, dựa trên thông tin đăng nhập phiên của bạn, trước khi cung cấp cho bạn liên kết - không có quyền truy cập vào tài nguyên = không có quyền truy cập liên kết đến tài nguyên. Nó có thể được sử dụng để cung cấp quyền truy cập vào các tệp / tài nguyên bên ngoài web root và được ứng dụng truyền lại cho người yêu cầu, thay vì có sẵn thông qua URL trực tiếp. Nhưng chỉ khi tư nhân của bạn cho phép nó.

Một ví dụ của cả hai là ở đây. Nó sẽ chuyển hướng bạn đến một URL khác, dựa trên chuỗi 'mkoenig' có thêm các gói URL bổ sung. Việc chuyển hướng lại được thực hiện trong mã hóa phía máy chủ mà bạn không thể (hoặc ít nhất là không nên) có thể nhìn thấy. Nếu sau đó bạn đi đến 'Tệp web', các tệp được liệt kê chỉ là các tệp mà giáo viên đã công khai. Cô ấy có thể có các tệp khác ngoài đó mà bạn không thể truy cập và sẽ không được liệt kê. Điều đó cũng được xử lý trên mã hóa phía máy chủ, liên quan đến những gì nó sẽ / sẽ không trả lại.

Không hack máy chủ hoặc có quyền truy cập vào mã nguồn phía máy chủ, tôi không tin rằng bạn có thể có được liên kết thực sự và thậm chí nếu bạn có thể, nó có thể không hữu ích trừ khi phiên riêng tư của bạn bảo máy chủ cấp cho bạn quyền truy cập vào nó .

Greg


2

Giống như trên, nó là không thể. Tôi khuyên bạn nên kích hoạt VM hoặc lấy một bản sao của Sandboxie để chứa trình duyệt của bạn cho các liên kết như vậy.

Biên tập

Không biết bạn đang sử dụng hệ điều hành nào, tôi sẽ đưa ra câu trả lời chung ở đây.

Một VM là viết tắt của một máy ảo. Về cơ bản, đây là một phần mềm tạo ra máy tính chạy bên trong máy tính của bạn. Một máy ảo sẽ có hệ điều hành và trình duyệt riêng. Mặc dù nó vẫn sử dụng internet và máy cứng của máy, nhưng nó là một máy riêng biệt theo quan điểm của HĐH. Vì vậy, nó làm cho nó thuận tiện như một mảnh giấy. Bất cứ điều gì xảy ra bên trong VM đều không ảnh hưởng đến máy thật của bạn.

Virtualbox là phần mềm tôi khuyên bạn nên dùng cho VM, trừ khi bạn đang sử dụng Windows, sau đó tôi khuyên dùng Virtual PC.

Sandboxie giống như một VM, nhưng nó chỉ cách ly các ứng dụng cụ thể. Bạn có thể yêu cầu nó chạy một bản sao của trình duyệt của bạn và bất kỳ tệp hoặc hành động nào mà trình duyệt thực hiện được chuyển hướng đến một thư mục tạm thời. Vì vậy, nếu nó cố tải xuống vi-rút, nó sẽ được chuyển hướng đến một thư mục tạm thời được cách ly khỏi phần còn lại của máy. Nó không mạnh bằng VM, nhưng nó sử dụng ít CPU / Bộ nhớ hơn và nhanh hơn và thuận tiện hơn.

Tôi sẽ thử Sandboxie trước. Đó là một đường cong học tập nhỏ hơn.


1
Cảm ơn! Ý bạn là gì khi "kích hoạt VM hoặc lấy một bản sao của Sandboxie để chứa trình duyệt của bạn cho các liên kết như vậy"? Một số tài liệu tham khảo để giải thích làm thế nào để làm hai điều?
Tim

Xin lỗi, tôi sẽ mở rộng câu trả lời của mình.
Surfasb

Cảm ơn! Hệ điều hành của tôi là Ubuntu. Nhưng tôi không hiểu làm thế nào để sử dụng VM có thể xác định các liên kết trực tiếp?
Tim

1
Nó không thực sự xác định các liên kết cho bạn. Nhưng nó tạo ra một môi trường an toàn sẽ giúp bạn xác định liên kết. Bạn không thể xác định các chuyển hướng mà không cần biên dịch trang.
Surfasb

1
Tôi không nghĩ câu hỏi của anh ấy liên quan đến an ninh. Anh ta chỉ tìm cách để có được liên kết tập tin trực tiếp.
Magnattic

2

Không bao giờ có thể tìm ra liên kết thực tế.

Máy chủ xử lý các yêu cầu tệp, sử dụng một số WWW Rewrite (ví dụ: đối với máy chủ apache), vì vậy, ví dụ, bạn có thể truy cập một trang www.example.com/13-this-site-has-nice-page-name.html, nhưng thực tế bạn có thể truy cập một số tệp php, với một tham số, chẳng hạn như:www.example.com/site_handler.php?UID=13

ngay cả khi bạn truy cập tệp pdf, có thể có một chuyển hướng trong chính phía máy chủ.

Đối với tải xuống tệp bằng trình xử lý, có thể khó hơn một chút, vì bạn có thể truy cập trang chỉ là trình xử lý tải xuống, ví dụ: www.example.com?file_downloader.php?param1=7683&param2=jld8ijn, etc... Trong trường hợp này, tập lệnh bạn đang truy cập có thể được gửi bằng một tiêu đề (như tệp pdf), nhưng trên thực tế, đó là tệp php.

kết luận: bạn không bao giờ có thể biết máy chủ và tập lệnh được cấu hình như thế nào, vì vậy bạn không bao giờ có thể biết địa chỉ thực, thực, ngay cả khi có vẻ như bạn biết.


1

Khi bạn gửi yêu cầu đến máy chủ web (nhấp vào liên kết), máy chủ có thể gửi một số phản hồi khác nhau. Ví dụ phổ biến là 404 (không tìm thấy trang), 403 (bị cấm) hoặc 500 (lỗi máy chủ). Có lẽ mã phản hồi phổ biến nhất là 200 (Ok), nhưng bạn sẽ không bao giờ thấy mã đó bởi vì nó thường đi kèm với trang mà bạn đang hy vọng nhìn thấy.

Có một vài mã khác đang chơi ở đây: 301 và 302. Mã 301 và 302 là mã chuyển hướng và chúng cho trình duyệt của bạn biết rằng phản hồi bạn muốn đã chuyển đến một vị trí khác. Sự khác biệt chính giữa chúng là cách trình duyệt lưu trữ mọi thứ. Mã 301 có nghĩa là "di chuyển vĩnh viễn" và lần sau khi bạn truy cập vào liên kết ban đầu, trình duyệt có thể nhớ rằng trang đã được di chuyển và đi thẳng đến vị trí mới. 302 có nghĩa là "Tìm thấy ở nơi khác" và sẽ cung cấp một liên kết mà trình duyệt của bạn chỉ nên sử dụng tạm thời.

Có thể viết một chương trình sẽ kiểm tra một liên kết và miễn là bạn tiếp tục nhận được 30x phản hồi theo phản hồi, cho đến khi cuối cùng nhận được 200. Tại thời điểm này, thay vì tải xuống nội dung, nó sẽ hiển thị cho bạn liên kết.

Thật không may, nó cũng phức tạp hơn thế. Một trang Html cũng có thể chuyển hướng đến một vị trí mới bằng cách sử dụng thẻ meta trong phần đầu của trang trông giống như thế này : <meta http-equiv="refresh" content="0;url=NEW PAGE URL" />. Vì vậy, một chương trình như vậy sẽ phải phân tích cú pháp html hoàn toàn để chắc chắn chúng ta đạt được chuyển hướng cuối cùng.

Ngoài ra, một trang có thể chuyển hướng bạn tiếp tục sử dụng javascript và javascript có thể bị xáo trộn. Vì vậy, bây giờ chương trình giả thuyết của chúng tôi cũng phải hiểu javascript. Tại thời điểm này, chúng tôi có một trình duyệt web đầy đủ chức năng. Chúng tôi đang thiếu một chi tiết nhỏ khi thực sự hiển thị một trang lên màn hình, nhưng chương trình của chúng tôi có hầu hết mọi thứ bạn cần cho một trình duyệt web hoàn chỉnh, bao gồm tất cả các vấn đề bảo mật đi kèm. Bạn sẽ không còn tốt hơn nếu bạn chỉ nhấp vào liên kết bình thường ở nơi đầu tiên.


1

Giả sử Windows: Cài đặt Proxy gỡ lỗi Web Fiddler , kích hoạt nó. Sau đó điều hướng đến URL bắt đầu của bạn và xem tất cả các chuyển hướng trong khung bên trái của Fiddler. Trên khung bên phải thay đổi các tab để hiển thị "Tiêu đề yêu cầu" và "Tiêu đề phản hồi". Tôi đã sử dụng thành công cho mục đích đó.

Mặt khác, URL "cuối cùng" có thể không hoạt động theo cùng một cách nếu bạn duyệt trực tiếp vì yêu cầu có thể không có người giới thiệu đúng hoặc bỏ lỡ một số hạn chế khác.

Nhưng bạn thậm chí có thể gửi yêu cầu tùy chỉnh với các tiêu đề tùy chỉnh trong Fiddler. Xem tab "Trình tạo yêu cầu" để biết điều đó.


0

Điều này phần lớn phụ thuộc vào trang web.

Để làm điều này, bạn phải nghiên cứu từng trang web riêng lẻ và có một cơ chế (hoặc mã) riêng cho từng trang web để trả về URI trực tiếp.

Bạn cũng có thể nghiên cứu một số tiện ích bổ sung cho trình duyệt nguồn mở cung cấp chức năng tương tự.


0

Để kiểm tra nơi một liên kết chuyển hướng bạn đến, bạn có thể sử dụng http://longurl.org/ . Nó đặc biệt hữu ích cho các URL rút ngắn. Nó không được sử dụng để tải xuống theo kịch bản, vv


0

Nếu bạn đang sử dụng Firefox, bạn có thể sử dụng một addon được gọi là RequestPolicy, trong số những thứ khác, sẽ tạm dừng và xin phép bạn bất cứ khi nào bạn được chuyển hướng đến một tên miền khác. Sẽ không hoạt động nếu bạn muốn tìm một chuyển hướng không đi đến một tên miền khác, nhưng tôi chắc chắn rằng có một Addon Firefox khác cho cái mà tôi không biết =)

https://www.requestpolicy.com/

Lưu ý rằng nó sẽ phá vỡ rất nhiều trang web sử dụng CDN (Mạng phân phối nội dung) vì theo mặc định, nó chặn tất cả các hình ảnh tên miền, tập lệnh, css và chuyển hướng. Vì vậy, nó không phải là lựa chọn khó khăn nếu bạn muốn luôn biết nơi chuyển hướng sẽ đi, trừ khi bạn chuẩn bị phải trải qua một vài bước bổ sung mỗi khi bạn truy cập một trang web mới.


0

Tôi không thực sự chắc chắn, nhưng nếu bạn đang sử dụng CUrl, bạn có thể không lấy nội dung URL (get_file_contents (url) trong PHP) và sau đó kiểm tra loại MIME không?


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.