在过去的几天里,我一直在拔头发寻找一个好的解决方案来防止在socks4/5代理上发生DNS泄漏.
我查看了SocksiPy(-branch)模块,并尝试包装了许多内容(urllib,urllib2,dnstools),但它们似乎仍然泄漏了DNS请求.pyCurl也是如此.
我知道proxychains/proxyresolv可以通过socks4/5代理抛出DNS请求,并且它通过一些LD_PRELOAD库完成所有它的神奇功能来修补套接字的功能,就像SocksiPy一样,但我似乎无法弄清楚为什么它不通过socks4或socks5代理发送DNS.
我想对于Linux我可以使用libproxychains.so的CType来做我的解决方案,但我正在寻找多平台的东西,所以我认为猴子修补套接字模块是要走的路.
有没有人想出一个解决这个问题的好方法?为了便携性,我想在代码中完成所有操作,并且我不想诉诸于运行另一个代理服务器!
谢谢!
我已经创建了2个这样的ModelViewSets(简化为演示):
class SomeBaseViewSet(viewsets.ReadOnlyModelViewSet):
serializer_class = SomeEventSerializer
permission_classes = (permissions.IsAuthenticated,)
def get_queryset(self):
return SomeObjects.objects.filter(owner=self.request.user)
def get_serializer_context(self):
context = super(SomeBaseViewSet, self).get_serializer_context()
context.update({
"user": self.request.user,
"some_context_key": False
})
return context
class AdminViewSet(SomeBaseViewSet):
# Added in the HasAdminPermission
permission_classes = (permissions.IsAuthenticated, HasAdminPermission)
# Different queryset filter (overriding `get_queryset` vs setting queryset for standardization)
def get_queryset(self):
return SomeObjects.objects.all()
# The context should have `some_context_key=True`, and `user=request.user`
def get_serializer_context(self):
context = super(AdminViewSet, self).get_serializer_context()
context.update({
"some_context_key": True
})
return context
Run Code Online (Sandbox Code Playgroud)
我的路由器/ url配置看起来像这样
router = DefaultRouter()
router.register(r'some_view', SomeBaseViewSet, …Run Code Online (Sandbox Code Playgroud) 我似乎无法找到关于我的特定问题的问题,所以请原谅我,如果之前已经提出过这个问题!
无论如何,我正在编写一个脚本来遍历一组URL,并给我一个具有唯一参数的唯一URL列表.
我遇到的麻烦实际上是比较参数以消除多个重复.这有点难以解释,所以一些例子可能是有序的:
假设我有一个像这样的URL列表
我将每个URL解析为列表列表,所以最终我有一个这样的列表:
sort = [['id', 'title'], ['id', 'c', 'title'], ['b', 'id']]
Run Code Online (Sandbox Code Playgroud)
我需要找到一种方法,在我的列表中只给出2个列表:
new = [['id', 'c', 'title'], ['b', 'id']]
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经有点了解它,我知道我已经接近了,我已经对这个问题抨击了几天了:(.有什么想法吗?
提前致谢!:)
编辑:抱歉不清楚!此脚本旨在为后期抓取的Web应用程序查找唯一的入口点.基本上,如果URL有3个唯一的入口点
['id', 'c', 'title']
Run Code Online (Sandbox Code Playgroud)
我更喜欢与2个唯一入口点相同的链接,例如:
['id', 'title']
Run Code Online (Sandbox Code Playgroud)
因此,如果较小的变量位于较大的集合中,我需要新的列表列表来消除带有2的列表并且更喜欢仅带有3的列表.如果还不清楚请告诉我,谢谢你的快速回复!:)