小编Spe*_*uex的帖子

Common Lisp输出文件流SBCL

我在debian上的SBCL.

出于某种原因,如果我使用这个:

(with-open-file (output (open #p"file.txt"
               :direction :output
               :if-exists :overwrite))
   (format output "test")))
Run Code Online (Sandbox Code Playgroud)

file.txt纯文本文件在哪里.

我收到了错误

#<SB-SYS:FD-STREAM for "file /home/me/file.txt" {1004A90813}> is not
a character output stream.
Run Code Online (Sandbox Code Playgroud)

即使使用:element-type 'character也不能救我.我无法通过任何方法打开任何输出流.如果我尝试使用write-bit它说它不是二进制输出流.没有其他写函数可以工作,例如write-sequencewrite-line.他们都返回此错误.我该如何解决?

lisp sbcl common-lisp stream

4
推荐指数
1
解决办法
1126
查看次数

等待 CloudFlare DDOS 保护 LWP Perl

编辑:最终使用 WWW::Mechanize::Firefox。我在下面回答了我自己的问题。

我正在尝试访问一个网站并下载它的页面。网站上的cloudflare DDOS防护偶尔会出现,我无法让LWP通过。我可以成功地检测到一个页面带有正则表达式的 cloudflare 启动页面,/Ray ID: [a-f0-9]*/但是每当我尝试再次连接时,我都会得到带有新 Ray ID 的相同启动屏幕。这是一个(精简的)代码示例:

use LWP::UserAgent;
$ua = LWP::UserAgent->new;
$ua->agent('Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0 Iceweasel/31.3.0');
$signin_url = 'my url';
$signin_page = $ua->get($signin_url);
if($signin_page->content =~ /Ray ID: ([a-f0-9]*)/i) {
     print "DDOS protection page here\n";
     #more code to retry, but just gets back into this part of the IF
 } else {
     print "Not the DDOS page\n";
     #now I would save to file
}
Run Code Online (Sandbox Code Playgroud)

由于那不起作用,我需要能够以另一种方式做到这一点。

regex perl lwp lwp-useragent cloudflare

3
推荐指数
1
解决办法
1911
查看次数

标签 统计

cloudflare ×1

common-lisp ×1

lisp ×1

lwp ×1

lwp-useragent ×1

perl ×1

regex ×1

sbcl ×1

stream ×1