我有一个功能齐全的scrapy脚本来从网站中提取数据.在设置过程中,目标站点根据我的USER_AGENT信息禁止了我.我随后添加了一个RotateUserAgentMiddleware来随机旋转USER_AGENT.这非常有效.
但是,现在当我尝试使用scrapy shell来测试xpath和css请求时,我收到403错误.我确定这是因为scrapy shell的USER_AGENT默认为某个值,目标网站已列入黑名单.
问题:是否可以使用与默认值不同的USER_AGENT来获取scrapy shell中的URL?
fetch(' http://www.test ')[添加一些东西?更改USER_AGENT]
谢谢
我想使用多智能体范例来模拟一些场景,看起来NetLogo和Repast是最受欢迎的工具.
我想知道是否有人对任何一方有任何经验,可以告诉我更多关于它们的信息吗?例如,我注意到Repast有一个类似于通量图的建模选项,但我认为它相当有限.我查看了官方网站上的教程和文档,文档似乎缺乏.虽然有一些例子,我会说扩展它来模拟一个它没有专门准备的环境,目前看起来像一个无法达到的目标,尽管Repast显然非常强大并且显然能够处理它,给予足够的熟悉它.
另一方面,NetLogo有更多的例子,总体而言我更喜欢它的简单性,但它似乎更侧重于疾病或类似模型的模拟传播.我找到了一本教授Logo的编程书,所以我觉得开始使用它也比较容易.
目前,我正在考虑将僵尸网络和IDS模拟为多代理.然而,问题是我必须抽象网络和传输层到一定程度,以便能够做到这一点,以及在节点之间产生流量.Repast显然更适合这种情况,但鉴于其复杂性和缺乏文档,我正在考虑使用NetLogo.虽然NetLogo有一些传统应用程序的例子(例如:俄罗斯方块或吃豆人),但我不确定它的适用性.
有谁知道GWT的user.agent属性和目标浏览器的权威列表?如果我能在网络上的任何地方找到这样的东西,我会被诅咒!
我正在尝试实现一个像骰子一样的代理:
defmodule Dice do
@on_load :seed_generator
def start_link(opts \\ []) do
Agent.start_link(fn -> [] end, name: __MODULE__)
end
def roll(n, val) do
Agent.cast(__MODULE__, fn(_) ->
Stream.repeatedly(fn -> :random.uniform(val) end)
|> Enum.take(n)
end)
end
def seed_generator do
:random.seed(:erlang.now)
:ok
end
end
Run Code Online (Sandbox Code Playgroud)
但是,每次重新启动iex时生成的数字都是相同的.我究竟做错了什么 ?种子不工作,因为 :random.uniform呼叫在代理内部?或者与may相关的东西Stream.
我需要能够从根级别守护程序启动/停止每会话GUI代理.
我希望能够做的基本上是
for num in `ps ax | grep [s]bin/launchd | cut -c 1-5`;
do
if [ $num -ne 1 ];
then
sudo launchctl bsexec $num launchctl (un)load -S Aqua /Library/LaunchAgents/com.mycompany.mydaemon.plist;
fi;
done
Run Code Online (Sandbox Code Playgroud)
但这仅启动/停止一个实例,并在当前GUI会话中以root身份运行.如果我离开sudo,我就会开始
task_for_pid() (os/kern) failure
Couldn't switch to new bootstrap port: (ipc/send) invalid port right
Run Code Online (Sandbox Code Playgroud)
我已经尝试过使用bsexec的各种其他排列(包括使用load/unload命令从bsexec调用辅助脚本),但是我永远不能让实例以root身份启动,而不能在另一个GUI会话中启动.
我也试图与乱搞su - <user> ...和sudo -u <user> ...,但没有运气有两种(如很多人在上面链接的文章和其他地方的讨论).
有人有什么想法吗?
编辑:我尝试使用Graham Lee下面建议的包装工具执行此操作,但是我收到以下错误:
launch_msg(): Socket is not connected
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的命令行命令,包装器和脚本(501是用户ID,63093是另一个登录到系统的用户的launchd的pid):
命令行:
sudo launchctl bsexec 63093 /path/TestSetUIDAndExecuteTool …Run Code Online (Sandbox Code Playgroud) 我目前正在寻找为C++编写的离散事件模拟器.我在网上找不到很多以OO风格写的东西; 有一些,但过时了.其他一些东西,比如Opnet,Omnet和ns3,对于我需要做的事情来说太复杂了.此外,我需要模拟能够模拟数千个节点系统的基于代理的算法.
有人知道任何适合我需要的东西吗?
我正在使用MailboxProcessor类来保持独立的代理人做自己的事情.通常,代理可以在同一个进程中相互通信,但我希望代理在处于不同的进程或甚至不同的机器上时能够相互通信.什么样的机制最适合实现它们之间的通信?有一些标准的解决方案吗?
请注意,我正在使用Ubuntu实例来运行代理.
我正在构建一个Android应用程序来显示来自服务器的内容Feed.该服务器是一个移动网站(如http://m.google.com),可跟踪各种移动客户端的流量.要区分Android客户端,如何为我的应用提供通用字符串?
这就是我问的原因:
我得到的一些Android设备有UA字符串,如:
Mozilla/5.0 (Linux; U; Android 2.2.1; en-us; ADR6400L 4G Build/FRG83D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
Mozilla/5.0 (Linux; U; Android 2.1; en-us; Eclair_SPR Build/30201) AppleWebKit/520.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/520.17
Mozilla/5.0 (Linux; U; Android 2.1; en-us; Eclair_SPR Build/30201) AppleWebKit/520.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/520.17 Android_MyFirstApp
Mozilla/5.0 (Linux; U; Android 2.2.1; en-us; ADR6400L 4G Build/FRG83D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
Mozilla/5.0 (Linux; U; Android 2.1; en-us; Eclair_SPR Build/30201) AppleWebKit/520.17 (KHTML, like Gecko) …
听起来在ZeroMQ中使用传统UNIX套接字的套接字是没有意义的.我基于对ZeroMQ的错误感知设计了一种用于分布式搜索算法的架构.在我的程序中,有一个代理负责监视其他代理并收集他们的数据.在PULL-PUSH或PUB-SUB模式之后,将在代理之间传输实际数据.每个代理都有一个PULL套接字监听传入的消息.每条消息都包含一个ID号,用于指定发送者标识.
在初始化阶段,监视器应该监听其REP套接字.每个代理将连接到监视器的着名REP套接字并自我介绍(发送他的ID号和代理正在侦听的端口号).监视器将有关代理的所有数据存储在三个字段的记录中:<ID, IP, port>.(这是我在ZMQ遇到问题的地方.)当某些代理计数器准备就绪时,监视器会将所有数据(每个代理程序<IP,ID,port>)发送给所有代理程序.最后一步是通过代理和监视器之间的PUB-SUB模式完成的.
这张图片可能有助于了解我的意图:

在上面的图片中,显示器应该将它的表发送给每个人.关键问题是如何以REQ-REP模式获取请求者(任何代理)的公共IP地址?所有代理都绑定到其本地主机(127.0.0.1).它们应该分布在任意数量的主机上.所以AFAIK他们需要了解彼此的公共IP.
在没有解决方案的情况下,任何有关重新设计架构的帮助都是合适的.
更新
我能想到的一个候选解决方案是修改每个代理以绑定到他/她的公共IP而不是localhost.如果有一种获取公共IP地址的神奇方法,任何代理都可以将其地址发送到监视器.
第二次更新
目前,代理获取其公共IP地址并通过消息将其发送到服务器:
std::string AIT::ABT_Socket::getIP() {
std::string address = "";
FILE * fp = popen("ifconfig", "r");
if (fp) {
char *p = NULL, *e;
size_t n;
while ((getline(&p, &n, fp) > 0) && p) {
if (p = strstr(p, "inet addr:")) {
p += 10;
if (e = strchr(p, ' ')) {
*e = '\0';
return std::string(p);
address = std::string(p);
}
}
}
}
pclose(fp);
return …Run Code Online (Sandbox Code Playgroud) 对于我的自动化测试,我有一个项目添加到TeamCity服务器和2个代理池,一个是Windows服务器,另一个是MAC.默认代理程序池是WIN,但我想在MAC服务器上运行我的测试.若要更改代理池MAC,我试图通过设置添加代理需求 teamcity.agent.name到MAC server从列表中,但不会添加到与项目相关的相容剂的名单,但加入的相容性助剂与在它上面这样的警告:Following agents belong to the agent pools which are not associated with "Tests" project这里测试是我的项目的名称.
如何将MAC代理与我的项目相关联?