Tôi đang cố tạo một ứng dụng lọc web đơn giản trong python. Cách tôi muốn làm điều này là để theo dõi lưu lượng truy cập trên cổng tcp 80/443 (http) và nếu có lưu lượng truy cập, tôi muốn kiểm tra một cái gì đó trước khi tôi để cho nó đi qua. Nếu nó không kiểm tra, tôi muốn cho người dùng được chuyển hướng đến một trang mà tôi chọn. Vì vậy, câu hỏi của tôi là, khi người dùng truy cập http://www.google.com trong trình duyệt, có cách nào để tôi có thể chặn yêu cầu đó và có cách nào để tôi có thể chuyển hướng họ đến một trang khác theo lựa chọn của tôi không? Không.Ngăn chặn giao diện web của Python từ trình duyệt
Trả lời
Bạn cần phải viết proxy web và đặt máy chủ proxy của máy khách web của bạn thành http://localhost:8000/ (hoặc bất kỳ proxy nào đang nghe).
client web của bạn sau đó sẽ gửi HTTP như thế này:
để proxy của bạn mà nó sau đó phải viết lại như sau:
GET/
và gửi vào www. google.com, nhận phản hồi và sau đó gửi nó trở lại ổ cắm ban đầu cho máy khách. Lưu ý rằng giải thích được đơn giản hóa ồ ạt.
Dù sao, tất cả các công cụ chuẩn của nó và tôi nghi ngờ các proxy web Python đã tồn tại để bạn có thể hack.
này là từ một blog post tôi đã viết một khi trở lại. sử dụng webob và dán. TransparentProxy chuyển tiếp yêu cầu tới bất kỳ url nào mà yêu cầu chỉ định. Bạn có thể viết phần mềm trung gian để làm điều gì đó với yêu cầu trước khi nó được chuyển giao cho transparentproxy.
Sau đó, chỉ cần đặt cài đặt proxy trình duyệt của bạn thành địa chỉ bất kỳ mà proxy của bạn đang chạy.
ví dụ này in yêu cầu và phản hồi, trong trường hợp của bạn, bạn muốn kiểm tra trạng thái phản hồi cho 404 hoặc 302 hoặc bất kỳ điều gì và gửi đến mã bạn viết.
from webob.dec import wsgify
from paste import httpserver
from paste.proxy import TransparentProxy
def print_trip(request, response):
"""
just prints the request and response
"""
print "Request\n==========\n\n"
print str(request)
print "\n\n"
print "Response\n==========\n\n"
print str(response)
print "\n\n"
class HTTPMiddleware(object):
"""
serializes every request and response
"""
def __init__(self, app, record_func=print_trip):
self._app = app
self._record = record_func
@wsgify
def __call__(self, req):
result = req.get_response(self._app)
try:
self._record(req.copy(), result.copy())
except Exception, ex: #return response at all costs
print ex
return result
httpserver.serve(HTTPMiddleware(TransparentProxy()), "0.0.0.0", port=8088)
chỉnh sửa:
Dưới đây là một ví dụ về middleware tôi đã viết để tôi có thể đánh chặn một đường dẫn và trả về một phản ứng khác nhau. Tôi sử dụng điều này để kiểm tra một ứng dụng nặng javascript được mã hóa cứng cho sản xuất, tôi chặn tệp config.js và đầu ra của riêng mình có cài đặt cụ thể không nhất thiết.
class FileIntercept(object):
"""
wsgi: middleware
given request.path will call wsgi app matching that path instead
of dispatching to the wrapped application
"""
def __init__(self, app, file_intercept={}):
self._app = app
self._f = file_intercept
def __call__(self, environ, start_response):
request = Request(environ)
if request.path.lower() in self._f:
response = request.get_response(self._f[request.path.lower()])
else:
response = request.get_response(self._app)
return response(environ, start_response)
và là một ví dụ tôi sẽ khởi tạo nó như vậy ....
app = FileIntercept(TransparentProxy(),
file_intercept={"/js/config.js":Response("/*new settings*/")})
httpserver.serve(HTTPMiddleware(app), "0.0.0.0", port=8088)
Nếu đó là một trang web cụ thể, như google.com, bạn luôn có thể poision các tập tin host. Nó sẽ là một giải pháp xấu xí nhưng đơn giản.
Nếu đó là một đường đi, nó nằm trong:
C:/windows/system32/drivers/hosts.txt
Nó cũng trong etc
trên Linux, không chắc chắn là mặc dù ...
- 1. ngăn chặn tìm kiếm của trình duyệt ctrl f từ cuộn div thu gọn của tôi
- 2. Ngăn chặn fb.ui() di chuyển trình duyệt
- 3. Ngăn chặn bộ nhớ đệm của trình duyệt trên các nâng cấp ứng dụng web
- 4. Làm thế nào để ngăn chặn bộ nhớ cache của trình duyệt cho trang web php
- 5. Thêm Giao diện JavaScript vào Trình duyệt
- 6. Giao diện cổng Web bằng Python 3
- 7. Có thể ngăn chặn 403 lỗi đăng nhập vào giao diện điều khiển web không?
- 8. Ngăn chặn trình duyệt Text Input Gợi ý
- 9. Giao diện web của Subversion
- 10. Asp.net MVC FileContentResult - ngăn chặn mở trong trình duyệt
- 11. Tùy chỉnh giao diện của trình kiểm tra web Chrome
- 12. Ngăn chặn trình duyệt web từ đóng cửa cho đến khi phản ứng AJAX được trả về
- 13. Ngăn chặn trình duyệt từ chụp đến vị trí cuộn trước khi đẩy lùi nút
- 14. Cách tốt hơn để ngăn chặn bộ nhớ đệm của trình duyệt của các tệp JavaScript
- 15. Ngăn chặn di chuyển trên trình duyệt di động, mà không ngăn chặn việc nhập tiêu điểm
- 16. Cách ngăn giao diện mở rộng
- 17. Ứng dụng Máy tính để bàn Python với Trình duyệt dưới dạng giao diện?
- 18. Làm cách nào để ngăn chặn đầu ra HTML từ PHP hiển thị trong trình duyệt?
- 19. Ngăn WebView mở Trình duyệt
- 20. Ngăn chặn bộ nhớ đệm trình duyệt của kết quả cuộc gọi jQuery AJAX
- 21. Trình duyệt web nào hỗ trợ các trình duyệt web?
- 22. Tại sao không sử dụng SOAP để giao tiếp với giao diện người dùng (tức là trình duyệt web)?
- 23. Ngăn chặn hình thức đệ trình đôi
- 24. "Giao diện web" để kiểm tra PHPUnit?
- 25. Hộp thoại Giao diện người dùng jQuery (Phương thức), ngăn chặn bất kỳ postback nào
- 26. Thay đổi cài đặt proxy của trình duyệt từ Python?
- 27. Ngăn chặn một lớp từ instantiation trực tiếp trong Python
- 28. ngăn chặn subprocess.Popen từ hiển thị đầu ra trong python
- 29. Trình duyệt web nhúng
- 30. ngăn chặn gian lận cho trình duyệt dựa trên xmlhttp/js/perl/php trò chơi
Cảm ơn spacedman. Vì đây là một bộ lọc, nếu tôi muốn chắc chắn rằng không ai vô hiệu hóa proxy, làm thế nào tôi có thể làm điều đó? Có cách nào để đặt mục tiêu mặc định cho trình duyệt ở lại với proxy của tôi không? – Sam
Nevermind. Tìm thấy những gì tôi đang tìm kiếm - chặn proxy – Sam
** scapy ** sẽ không thực hiện tác vụ này? hãy xem chủ đề của tôi: http://stackoverflow.com/questions/9774525/how-to-filter-sniff-out-web-pages-according-to-datatext-contained –